最新消息:

阿里云ECS主机wordpress经常出现“建立数据库连接时出错”的解决方法

软件技巧 小编 857浏览 0评论

这一段时间站长的另一个小站,用的是阿里云的主机,网站程序选择了wordpress。由于是新站,流量很少但是近一段时间隔几天就会出现“建立数据库连接时出错”。重启主机后恢复正常。经过搜索,找到下面这篇文章。感觉比较靠谱。转载下希望对遇到同样故障的站长朋友们有用。以下为正文:

以前一直用虚机,这次改用了阿里云服务器,因为这个站点纯粹就是个人喜好建立的,所以主机配置比较低,单核1G,1M独立外网带宽,环境是centos6.5 64位,nginx mysql 位安装管理面板,自己对这方面也完全是白丁,整个服务器环境的搭设全部按照阿里云官方的教程进行,整体弄完后,把自己的WORDPRESS搬上去,也还算顺利。不过运行了半个多余突然出现问题。打开网页的时候显示“建立数据库连接时出错”,通过后台链接MYSQL发现报错无法连接,自己也不太懂,就直接重启了服务器,一切正常。不过出现这种问题心理多少有些担忧,就在后台通过看了下进程,一看发现一个php-fpm的进程有很多子进程,且占用内存非常大,很短时间1G内存空闲就只剩下不到300M,而CPU使用率却很低。

找了个在线压力测试,并发30,进行3分钟压力访问,发现内存很快就所剩无几了,直到低于90M以后突然恢复到270M空闲时,发现MYSQL的进程被KILL了。压力测试结束后,内存并没有被释放。这就是问题所在了。

通过百度查询得知,PHP-CGI会释放内存,但并不会把内存归还系统,所以当过多的PHP-FPM子进程存在时,内存就会一点点被吃干,最终导致溢出。解决方法网上貌似很多,但看起来有点天书,选了一种比较好理解易操作的方法,就是修改php-fpm.conf文件,控制这个进程的数量。

找这个文件我就费了很大劲,网上的文章都不说这个文件在哪,对于小白来说,就有点吃力,最后找到,这个文件在php安装文件夹心下的etc文件夹里,如果是阿里云的话,应该就是 /alidata/server/php/etc里。

打开编辑这个文件,可以通过FTP或者LINUX命令行进行修改。主要涉及几个参数。

pm 这个是设置运行方式的,分别是static(静态)或者dynamic(动态)

默认应该是在214行左右,显示为 pm = dynamic,意思就是动态方式,如果内存小,比如512M,1G,2G之类,建议使用动态。

pm.max_children:静态方式下开启的php-fpm进程数量,这个是有在pm模式为static的情况下生效。

pm.start_servers:动态方式下的起始php-fpm进程数量,这个是pm位dynamic模式下需要设置的参数,意思就是启动运行时建立的起始php-fpm进程数量

大概在230行左右,我设置后的,pm.start_servers = 3

pm.min_spare_servers:动态方式下的最小php-fpm进程数

大概位置在235行,我设置后的,pm.min_spare_servers = 3

pm.max_spare_servers:动态方式下的最大php-fpm进程数量

大概位置在240行,我设置后的,pm.max_spare_servers = 10

还有一个就是pm.max_requests,这个在百度查询都的结果就是接受多少次请求后自动重启进程的,默认是500,不知道这个数值具体是指什么的,因为重启就意味着把php占用的空闲内存释放给系统,不过一旦这个值设置的过低,可能会导致所有的php-fpm进程在几乎同时重启,而重启过程中CPU占用率会飙升,且PHP会拒绝访问请求,所以这个值不能过低,按照我这个小白理解就是宁可适当的减少运行的子进程数,也不能过分的降低这个值。不知道对不对

大概位置在251行,我设置后的,pm.max_requests = 200

这就是我设置后的几个参数,保存后重启服务,再次观察,内存占用率基本稳定在400M,缓慢增长,经过了一晚的再次进行30并发的压力测试,虽然内存和CPU同样会在此时爆发增长,但是这个并发数还是挺住了,且在压力测试结束后,内存大部分被释放给系统了。最后又在wordpress安装了wp-super-cache缓存插件,很大程度降低了访问页面时对服务器的压力。

根据百度查到的,配置php-fpm并非由固定的模式,他基本是要找到一个平衡,对于我这样的小白来说,只能一点点的试,先改成这样运行一段时间观察下,后续再做调整,毕竟自己是小白,很多东西都得摸索,短时间内也无法确定效果,慢慢试吧。

linux命令行 top命令可以查看动态的系统资源占用情况, ps aux可以查看当时占用系统资源的情况,非动态。

文章来源:http://www.zbzv.com/935.html

转载请注明:站友网 » 阿里云ECS主机wordpress经常出现“建立数据库连接时出错”的解决方法

您必须 登录 才能发表评论!