当前配置:
16GO RAM,4个cpu内核,使用prefork模块的Apache / 2.2(由于avg进程大小约为22MB,因此将其设置为700个maxClients),并且启用了suexec和suphp mods(PHP 5.5)。
使用CakePHP2并存储在MySQL服务器上的网站后端。该站点的前面是文本/一些压缩图像,后面是数据处理。
当前流量:
每天少于[[〜60000个唯一身份访问者,在高峰期,我目前很容易达到700个以上同时连接的人,这些人填补了MaxClients。在这些时候使用apachectl status
时,我可以看到所有进程都被使用了。CPU正常。但是RAM会用光所有。
潜在流量:
[每天的访问量可能会增加到〜200000个唯一身份访问者,甚至更多。也可能不是。但是,如果发生这种情况,我想做好准备。由于我已经使用该配置达到了当前服务器的限制。因此,我考虑采用更大的新服务器,例如192GB Ram和20核。
我可以保留完全相同的配置(这意味着我可以使用相同的配置来处理10 *当前的流量)。
但是我想知道在我的情况下是否有一个更好的配置,使用更少的资源并且效率更高? (事实证明是这样)
关于my.cnf [mysqld]部分的建议,
thread_cache_size=100 # from 8 to reduce threads_created
innodb_io_capacity=500 # from 200 to allow higher IOPS to your HDD
read_rnd_buffer_size=128K # from 256K to reduce handler_read_rnd_next RPS of 129,942
thread_concurrency=6 # from 10 to expedite query completion with your 4 cores
slow_query_log=ON # from OFF to allow log research and proactive correction
这些更改将有助于减少CPU繁忙。观察:A)5.5.54已过期,新版本的性能更好。B)这些建议只是可能的改进的开始,即使使用5.5.4。C)您应该能够优雅地迁移到innodb_file_per_table您打开该选项。您的表已经由innodb引擎管理。
有关其他帮助,包括免费下载实用程序脚本,请查看我的个人资料,网络个人资料。