今天在一个 Apache 上通过 mod_fastcgi 开了 redmine,使用的时候发现访问速度非常之慢,打开一个页面一般需要十几秒,开始以为是网速的问题,但是同一台服务器上其它的网站访问非常快。
最开始以为是 rails 或者 mysql 的性能问题,但是打开 production.log 看了一眼,发现它们加起来一般占用仅几十毫秒的时间。Firefox 状态栏一直在显示正在加载,到底在干什么?用 “tail -f” 查看 apache 的 access_log,看到每次打开一个 redmine 页面,加上图片、javascript、CSS 一共有十个左右的请求,但是它们大概分成三波,两波之间有5秒左右的间隔。这时猛然想起以前因为内存不足,在 apache 配置文件加了几个限制,直接导致这种现象的就是
MaxClients 2
当时几乎没有人访问 Apache,所以我把几个相关的数字都调得特别低,但是 redmine 这样的 rails 程序,光 prototype 带的 JavaScript 文件就一大堆,每个页面都要全部加载,即使只有一个人访问也会出现等待。这时 error_log 里应该会出现错误:
[error] server reached MaxClients setting, consider raising the MaxClients setting
从这个角度看,减少每个页面包含的 JavaScript/CSS/图片文件数量也是减轻服务器压力的重要途径,毕竟降低了连接数。
Leave a Reply