关于AMH 4.2面板环境的一些优化

由于我使用的是AMH 4.2面板环境,有时会遇到这样的情况。

某一个网站例如baddb.com打不开,但是这台主机上的其它网站又可以打开。

查看内存,负载,CPU的占用情况又都是正常的。

使用netstat -an 命令,才发现,有大量的如下进程,似乎是僵死了。

unix 2 [ ACC ] STREAM LISTENING 3429 /tmp/php-cgi-baddb.com.sock
unix 2 [ ACC ] STREAM LISTENING 3430 /tmp/php-cgi-baddb.com.sock
unix 2 [ ACC ] STREAM LISTENING 3431 /tmp/php-cgi-baddb.com.sock
unix 2 [ ACC ] STREAM LISTENING 3432 /tmp/php-cgi-baddb.com.sock
unix 2 [ ACC ] STREAM LISTENING 3433 /tmp/php-cgi-baddb.com.sock
unix 2 [ ACC ] STREAM LISTENING 3434 /tmp/php-cgi-baddb.com.sock
unix 2 [ ACC ] STREAM LISTENING 3435 /tmp/php-cgi-baddb.com.sock
unix 2 [ ACC ] STREAM LISTENING 3436 /tmp/php-cgi-baddb.com.sock
unix 2 [ ACC ] STREAM LISTENING 3437 /tmp/php-cgi-baddb.com.sock

于是经过多方摸索,多次解决失败又重新继续摸索,终于近期不再有这类现象,现将具体处理方法记录。

1:句柄优化

涉及系统允许同时打开的句柄,php-fpm允许同时打开的句柄,mysql允许同时打开的句柄等方面。

使用ulimit -n命令来查看数值。默认发现为1024,我们需要加大该值。

vi /etc/security/limits.conf

在对应处加上例如

* - nofile 8192

该值为系统允许的文件句柄打开数量总开关,因此该值的大小决定了例如php-fpm,apache,nginx,mysql等其它服务能够同时打开句柄的数量值。

本项修改需要重新登录SSH,再执行以下命令,才能看到是否生效。

ulimit -n

 

2:php-fpm优化

在AMH4.2中装有php5.2和php5.3两种版本,因此使用对应站点使用不同的PHP版本,需要分别优化。

  1. php5.3,在/usr/local/php/etc/fpm/baddb.com.conf中,需要添加
    pm.max_requests = 8192
    rlimit_files = 51200

    保存,并/etc/init.d/amh-start 重启AMH环境生效。

  2. php5.2,在/usr/local/php-5.2/etc/fpm/baddb.com.conf中,修改或确保以下两项参数值
    <value name="max_requests">8192</value>
     <value name="rlimit_files">51200</value>

    保存,并/etc/init.d/amh-start 重启AMH环境生效。

 

3:mysql优化

如果是数据库大量读写,导致MYSQL有大量进程滞留,那么通常在MYSQL的错误日志中能看到如下类似的纪录。

[ERROR] Error in accept: Too many open files,[ERROR] /usr/sbin/mysqld: Can’t find file: ‘./xxxxx/wp-xxxxx.frm’ (errno: 24),[ERROR] /usr/sbin/mysqld: Sort aborted,

打开vi /etc/my.cnf文件,在[mysqld]标签段中添加一行:

open_files_limit = 8192

然后/etc/init.d/amh-start或单独重启MYSQL即可。

 

4:apache优化

由于本人使用的是官方amh4.2 + 额外集成apache2.4版本,因此顺带将apache也优化一下。

本人的apache2.4安装在 /usr/local/apache2/下。

因此,在/usr/local/apache2/conf/httpd.conf中,在“Include conf/default.conf”行之前,添加如下两行参数

ProxyTimeout 3000
Timeout 3000

由于在apache 2.4中,有三种MPM模式(详细可点击)。因此需要先查看当前使用的是什么模式。

root@localhost ~]# /usr/local/apache2/bin/apachectl -l
Compiled in modules:
 core.c
 mod_so.c
 http_core.c
 event.c

加粗的event.c,表明使用的是mpm_event_module模式。
编辑 /usr/local/apache2/conf/extra/httpd-mpm.conf 文件,在<IfModule mpm_event_module>标签下,修改为如下参考值

<IfModule mpm_event_module>
StartServers 3
 MinSpareThreads 75
 MaxSpareThreads 500
 ThreadsPerChild 100
 MaxRequestWorkers 2000
 MaxConnectionsPerChild 0
</IfModule>

最后,重启apache或/etc/init.d/amh-start生效。

点赞

发表评论