将网站从GoDaddy共享服务器转移到EC2实例。处理流量,在典型的一天的高峰时间是约300名活跃访客,至少可以说是有问题的。我的CPU使用率缓慢上升,最终达到100%,使网站基本上无法使用。我一直在尝试从错误日志中解决问题,并想知道是否有更重要的问题需要解决。
在查看Apache错误日志后,我增加了MaxClients [prefork(256)/ worker(300)/ serverlimit(256)] ==> (500/500/500)。
在查看PHP错误日志后,我增加了[pm.max_children(50)/ pm.start_servers(5)/ pm.min_spare_servers(5)/pm.max_spare_servers(35))==> (100,10,10,70)
即使有这些数字,我仍然有警告: [23-Feb-2014 04:34:47]警告:[池www]似乎很忙(你可能需要增加pm.start_servers,或pm.min / max_spare_servers),产生32个孩子,有7个闲置,总共83个儿童
人为地增加这些数字似乎不是长期解决方案。有什么想法吗?
EC2:
RDS:
答案 0 :(得分:0)
除了诸如优化服务器端语言页面,优化数据库查询等常规内容之外,我们还可以了解更多详细信息。
根据您的图表进行更新
假设所有图表具有相同的比例。
当您的服务器达到100%CPU时,您有0次读取和0次写入,但您的网络使用率很高。流量来往哪里?您可以认为正在使用缓存,但我很惊讶只有缓存可以保存用户的整个访问权限。我的意思是,他们必须使用完全相同的文件/页面而不需要一次更改。问题在于,不是让所有用户都使用相同的资源是多么不可能,那就是你有一些数据库访问权限。
如果数据库位于同一台服务器上,则数据库的读/写速度非常低,甚至无法提高其他图形上的条形。如果数据库在另一台服务器中,那么一个人不会影响另一个服务器是正常的。
但是,即使几乎没有读/写工作,数据库仍在工作,并且负载正在增加,这表明查询存在问题。可能是复杂的视图,可能是非常低效的查询,可能会对某些查询进行过多的计算。队列深度似乎表明你有一个瓶颈。
我说你有一些事情让数据库工作变得非常困难,而这正是影响最大的事情。如果数据库位于同一服务器中。但这不是整个故事。先检查一下。