我是小白,刚学着建站,是根据
[font=微软雅黑, 'Microsoft Yahei', 'Hiragino Sans GB', tahoma, arial, 宋体]“零基础”系列课程--如何在ECS上快递搭建一个WordPress站点,一步步建成。但是后续出现了一些问题,比如打开网页的时候显示“
建立数据库连接时出错”,因此在网上搜索了一下解决方法,不知道对不对,请路过的大神过来看看。我的网站是: 啪几网 www.pajidy.com
以前一直用虚机,这次改用了阿里云服务器,因为这个站点纯粹就是个人喜好建立的,所以主机配置比较低,单核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可以查看当时占用系统资源的情况,非动态。
-------------------------
-------------------------
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。