我有一个网站,每天收到约25万次的综合浏览量。 PHP代码通常在0.02秒内执行,但实际响应时间可能会在高峰时间到几秒钟(有时甚至超过10秒)。 Apache运行多达700-800个进程,但内存使用率仍然很低(甚至不到8GB的一半),服务器负载通常也非常低。
我已将图像和资产文件移至Amazon S3,这已经帮了我很大忙。 同样重要的是,网站上也会不断上传新的图片(就像人们发布新照片一样)。
从这些线索,我认为这可能是一个磁盘或networking问题,但如何以及使用什么工具可以诊断?
有很多事情可以做,但从Apache / PHP服务器最有可能的事情开始:
MaxClients或者服务器上运行的任何其他内存的消耗(MySQL等)。 既然你说它只用了一半,那么这可能不是问题,虽然4GB的800个Apache进程只有5MB /进程似乎很低。 top ,看看你使用多less。 使用像sar这样简单的监控程序,或者像Nagios或Zabbix这样更复杂的监控程序,可以让您更详细地了解CPU负载。 你可以在这里做的主要事情是安装和使用像APC或eAccelerator的PHP操作码caching。 在那之后,除了优化数据库/应用程序之外,通常没有其他的工作可以做。 top和iostat的输出,看看你在做多lessIO。 高位的上限(无论是间歇还是恒定)通常表示IO问题。 如果是IO问题,那么找出它发生的地方(Apache,PHP,数据库,别的东西等等),因为解决scheme最终将取决于导致它的原因。 我也会检查各种日志文件的任何明显的错误信息(系统,Apache,数据库等)。 我知道我的网站有性能问题,只是因为像大量的网站文件句柄的数量设置太低。