服务器详情:
RAM: 16GB HDD: 1000GB OS: Linux 2.6.32-220.7.1.el6.x86_64 Processor: 6 Core
请参阅下面的链接我的#顶部预览:

我经常可以在我的plesk面板中看到标题中提到的错误,我的/etc/my.cnfconfiguration如下:
bind-address=127.0.0.1 local-infile=0 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql max_connections=20000 max_user_connections=20000 key_buffer_size=512M join_buffer_size=4M read_buffer_size=4M read_rnd_buffer_size=512M sort_buffer_size=8M wait_timeout=300 interactive_timeout=300 connect_timeout=300 tmp_table_size=8M thread_concurrency=12 concurrent_insert=2 query_cache_limit=64M query_cache_size=128M query_cache_type=2 transaction_alloc_block_size=8192 max_allowed_packet=512M [mysqldump] quick max_allowed_packet=512M [myisamchk] key_buffer_size=128M sort_buffer_size=128M read_buffer_size=32M write_buffer_size=32M [mysqlhotcopy] interactive-timeout [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid open_files_limit=8192
由于我的服务器httpd conf设置为/etc/httpd/conf.d/swtune.conf ,configuration如下:at prefork.c:
<IfModule prefork.c> StartServers 8 MinSpareServers 10 MaxSpareServers 20 ServerLimit 1536 MaxClients 1536 MaxRequestsPerChild 4000 </IfModule>
如果我运行grep -i maxclient /var/log/httpd/error_log那么我可以每天看到这个错误:
[root@u16170254 ~]# grep -i maxclient /var/log/httpd/error_log [Sun Apr 15 07:26:03 2012] [error] server reached MaxClients setting, consider raising the MaxClients setting [Mon Apr 16 06:09:22 2012] [error] server reached MaxClients setting, consider raising the MaxClients setting
我试图解释一切,我改变,以保持我的服务器好,但最大的时间我的服务器closures。 请帮助我哪些参数可以改变,以保持我的服务器好,我的网站可以加载快。 加载我的网站花费太多时间。
哇。
MaxClients设置为1536,每个Apache儿童使用大约69MB的RAM,只需要超过100GB的内存就可以避免交换Apache内存的“热”部分。 我可以build议你降低这个值,直到它适合你的可用内存? 像这样交换会让你的服务器变得非常慢。
由于您在同一台服务器上运行MySQL,所以我会为每个服务使用大约一半的可用RAM,因此MaxClients 115将适合您。 如果你想在MySQL周围留下一点喘息的空间,可能会稍微低一点。
现在,到MySQL,这可能是您的服务器运行缓慢的实际原因。 MySQL正在使用大量的CPU和很less的RAM。 三件事情要做:
long_query_time为10或20秒之类的高位。 慢慢降低设置,直到开始捕捉慢速查询。 一旦知道哪些查询导致了问题,请通过添加适当的索引或修改查询来调整它们。 调整查询是一个主要的话题,有好几本好书。 wget mysqltuner.pl ) 按照上面的“每服务一半”的想法, mysqltuner.pl会告诉你MySQL可以使用的最大内存量,但是你不可能看到这个,因为它依赖于每个连接的RAM分配,你永远不会看到所有您允许20,000个连接。 相反,看看MySQL实际使用什么,并使用剩余RAM的2/3到3/4,这是一个合理的价值。
您应该降低您的innodb_buffer_pool和innodb_buffer_pool根据您使用的引擎提升innodb_buffer_pool或innodb_buffer_pool 。 mysqltuner.pl会有比我更好的build议。
您用作此问题标题的错误消息与MySQL的wait_timeout设置有关。 有些进程已经打开了MySQL的连接,然后等待至less300秒的命令之间。 如果这是一个networking请求,提高这个价值是不正确的解决scheme。 300秒远远超过人们等待周围的networking请求才能完成。 修正导致平均负载如此之高(可能是其他慢速查询和交换),并且请求会更快。