阿里云
订阅广场
发表主题 回复主题
  • 6341阅读
  • 7回复

[待反馈]关于“建立数据库连接时出错”的解决方法

级别: 小白
发帖
22
云币
54
&ocuZ -5`  
我是小白,刚学着建站,是根据[font=微软雅黑, 'Microsoft Yahei', 'Hiragino Sans GB', tahoma, arial, 宋体]“零基础”系列课程--如何在ECS上快递搭建一个WordPress站点一步步建成。但是后续出现了一些问题,比如打开网页的时候显示“建立数据库连接时出错”,因此在网上搜索了一下解决方法,不知道对不对,请路过的大神过来看看。我的网站是: 啪几网  www.pajidy.com %VFoK-a  
以前一直用虚机,这次改用了阿里服务,因为这个站点纯粹就是个人喜好建立的,所以主机配置比较低,单核1G,1M独立外网带宽,环境是centos6.5 64位,nginx mysql 位安装管理面板,己对这方面也完全是白丁,整个服务器环境的搭设全部按照阿里云官方的教程进行,整体弄完后,把自己的WORDPRESS搬上去,也还算顺利。不过运行了半个多余突然出现问题。打开网页的时候显示“建立数据库连接时出错”,通过后台链接MYSQL发现报错无法连接,自己也不太懂,就直接重启了服务器,一切正常。不过出现这种问题心理多少有些担忧,就在后台通过看了下进程,一看发现一个php-fpm的进程有很多子进程,且占用内存非常大,很短时间1G内存空闲就只剩下不到300M,而CPU使用率却很低。 YnuY/zDF  
找了个在线压力测试,并发30,进行3分钟压力访问,发现内存很快就所剩无几了,直到低于90M以后突然恢复到270M空闲时,发现MYSQL的进程被KILL了。压力测试结束后,内存并没有被释放。这就是问题所在了。 p @kRo#~l  
通过百度查询得知,PHP-CGI会释放内存,但并不会把内存归还系统,所以当过多的PHP-FPM子进程存在时,内存就会一点点被吃干,最终导致溢出。解决方法网上貌似很多,但看起来有点天书,选了一种比较好理解易操作的方法,就是修改php-fpm.conf文件,控制这个进程的数量。 1Xo0(*O  
找这个文件我就费了很大劲,网上的文章都不说这个文件在哪,对于小白来说,就有点吃力,最后找到,这个文件在php安装文件夹心下的etc文件夹里,如果是阿里云的话,应该就是 /alidata/server/php/etc里。 =y-yHRC7  
打开编辑这个文件,可以通过FTP或者LINUX命令行进行修改。主要涉及几个参数。 ~h_ _Y>  
pm 这个是设置运行方式的,分别是static(静态)或者dynamic(动态) (BPO*'  
默认应该是在214行左右,显示为 pm = dynamic,意思就是动态方式,如果内存小,比如512M,1G,2G之类,建议使用动态。 y~\ujp_5w  
pm.max_children:静态方式下开启的php-fpm进程数量,这个是有在pm模式为static的情况下生效。 AwXzI;F^  
pm.start_servers:动态方式下的起始php-fpm进程数量,这个是pm位dynamic模式下需要设置的参数,意思就是启动运行时建立的起始php-fpm进程数量 vRH^en  
大概在230行左右,我设置后的,pm.start_servers = 3 ,|d9lK`"P  
pm.min_spare_servers:动态方式下的最小php-fpm进程数 ]}PXN1(  
大概位置在235行,我设置后的,pm.min_spare_servers = 3 o_`6oC"s  
pm.max_spare_servers:动态方式下的最大php-fpm进程数量 b6 %m*~  
大概位置在240行,我设置后的,pm.max_spare_servers = 10 |,p"<a!+{w  
还有一个就是pm.max_requests,这个在百度查询都的结果就是接受多少次请求后自动重启进程的,默认是500,不知道这个数值具体是指什么的,因为重启就意味着把php占用的空闲内存释放给系统,不过一旦这个值设置的过低,可能会导致所有的php-fpm进程在几乎同时重启,而重启过程中CPU占用率会飙升,且PHP会拒绝访问请求,所以这个值不能过低,按照我这个小白理解就是宁可适当的减少运行的子进程数,也不能过分的降低这个值。不知道对不对 >#$SaG!  
大概位置在251行,我设置后的,pm.max_requests = 200 J/'Fj?  
这就是我设置后的几个参数,保存后重启服务,再次观察,内存占用率基本稳定在400M,缓慢增长,经过了一晚的再次进行30并发的压力测试,虽然内存和CPU同样会在此时爆发增长,但是这个并发数还是挺住了,且在压力测试结束后,内存大部分被释放给系统了。最后又在wordpress安装了wp-super-cache缓存插件,很大程度降低了访问页面时对服务器的压力。  u&#>)h  
根据百度查到的,配置php-fpm并非由固定的模式,他基本是要找到一个平衡,对于我这样的小白来说,只能一点点的试,先改成这样运行一段时间观察下,后续再做调整,毕竟自己是小白,很多东西都得摸索,短时间内也无法确定效果,慢慢试吧。 &n;*'M  
linux命令行  top命令可以查看动态的系统资源占用情况,  ps aux可以查看当时占用系统资源的情况,非动态。
本帖最近评分记录: 1 条评分 云币 +1
glorywu 云币 +1 好使 2017-09-09
级别: 程序猿
发帖
387
云币
661
只看该作者 沙发  发表于: 2016-01-05
好东西,必须支持
[ 此帖被紫龙001在2016-01-05 10:07重新编辑 ]
级别: 论坛版主
发帖
15351
云币
32566

只看该作者 板凳  发表于: 2016-01-05
给善于钻研的你,一个赞。
善用阿里云帮助文档。
级别: 小白
发帖
22
云币
54
只看该作者 地板  发表于: 2016-01-05
回 2楼51干警网的帖子
论坛里的教程真的很给力,我一步步按着上面的做的。后来遇到了一些问题,也顺利解决了。
级别: 小白
发帖
22
云币
54
只看该作者 4楼 发表于: 2016-01-05
回 1楼紫龙001的帖子
格式有点乱,不是很会调
级别: 论坛版主
发帖
15351
云币
32566

只看该作者 5楼 发表于: 2016-01-05
回 3楼(原不周) 的帖子
教程大多是作者亲身体验的。
善用阿里云帮助文档。
级别: 新人
发帖
1
云币
3
只看该作者 6楼 发表于: 2017-09-09
好使
级别: 新人
发帖
8
云币
13
只看该作者 7楼 发表于: 01-04
Re关于“建立数据库连接时出错”的解决方法
很感谢楼主的分享,寻找“php-fpm”可以使用命令“php-fpm -i | grep fpm*”
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
批量上传需要先选择文件,再选择上传
 
验证问题: 73 + 0 = ?
上一个 下一个