导读:以前使用VPS,也就是安装个面板就完事,其他都不关心。但昨天突然发现使用网站测速工具测试网站速度时,网站就出现502或504错误,搜索了两天,似乎网上也没有什么好的解决方法,最后通过一些设置,总算有了一点效果。
这是一款512M的VPS,采用KVM虚拟化技术,服务器性能也很不错,传说超越Linode了,但在使用网站测速时,却遭遇了504 Gateway Time-out错误,有时是502错误。
VPS安装的是WDCP,起初很怀疑是面板的问题,因为官方论坛也有不少人发贴说有此问题,并且官方也没有给出明确的解决方案。
花了两天的时间,在网上找了许多方法,都没有解决问题。最后发现升级PHP版本时,忘了升级eAccelerator,按照文章“WDCP升级PHP5.3版本”中的方法升级后,似乎问题解决了。不过在此期间,我也设置过FPM,所以也不确定具体问题出在哪里。
这里介绍一下我对FPM的设置:
对于WDCP,php-fpm.conf的文件位置是:/www/wdlinux/etc/php-fpm.conf,非WDCP的,可以通过以下命令搜索找到:
find / -name 'php-fpm.conf'
编辑php-fpm.conf文件:
vi /www/wdlinux/etc/php-fpm.conf
查看pm的值,如果是static,则修改为dynamic。这是修改进程管理方式,分静态和动态,pm的值为static时是静态,pm的值是dynamic时为动态。
如果进程管理方式为静态,那么主要关心两个参数:
pm.max_children = 5
request_terminate_timeout = 30s
第一个是表示允许的最大进程数,这个根据服务器内存设定,一个进程数大约消耗30M内存。request_terminate_timeout表示PHP-CGI的执行限制,默认为0,表示一直执行下去。
如果pm的值为dynamic,则以下参数生效:
pm.start_servers = 15
pm.min_spare_servers = 5
pm.max_spare_servers = 25
pm.process_idle_timeout = 10s;
pm.min_spare_servers表示最小进程,512M内存设置为5至10即可。pm.max_spare_servers表示允许最大进程数,而pm.start_servers的值是根据pm.min_spare_servers和pm.max_spare_servers的值来的。计算公式为:
pm.start_servers = pm.min_spare_servers + (pm.max_spare_servers - pm.min_spare_servers)/2
所以,在设置这三个参数的任何一个参数时,都要考虑到另外的两个参数。
pm.process_idle_timeout表示结束空闲进程的时间,默认为10秒。
虽然现在我仍感觉在线人数多了之后CPU会满负荷,但比起设置前已经好多了。
需要找到:/usr/local/nginx/conf/nginx.conf 位置的文件,然后针对下面的参数进行设置。