我的 VPS 限制为 2GB 内存和 8 个 CPU 核心。
我在那个 VPS 上有 5 个网站(其中一个仅用于测试,除了我之外没有访问者)。所有 5 个网站都是图片库,就像壁纸网站一样。上周我注意到一个网站(主域,用于名称服务器,也是流量最大的网站,访问者最多)有问题。该网站有两个图片库,一个是几年前制作的旧静态 html 图库,另一个是主图库,由 ZENPhoto CMS 提供支持。我在同一个 VPS 上的另外两个网站上也有同一个图库 CMS(一个在运行,一个在测试)。在其他两个网站上,我有不同的 PHP 驱动图库。
问题是,过了一段时间后(从 Apache 重启后 10 分钟到几小时不等),主站点的页面加载变得非常慢,或者出现 503 服务暂时不可用错误。因此页面变得不可用。但是只有使用新 CMS 图库的那部分,带有静态 html 页面的旧站点部分运行迅速,没有问题。另外,具有相同 CMS 图库的另外两个站点和使用不同 PHP 驱动的图库的另外两个站点也运行正常,并且速度很快。我认为这一定是主站点的 CMS 出了问题,因为其他站点运行良好。然后,我尝试打开主站点上的联系人和留言簿页面,这些页面位于 CMS 之外,但也是 PHP 页面,但它们也无法加载,但相同的联系人 php 脚本同时在其他站点上运行良好。
所以,当站点开始挂起时,只有 PHP 生成的内容无法工作,就像我说的,其他静态页面都可以工作。并且,只有在那个主站点上我遇到问题。然后我需要重新启动 Apache,重新启动之后,一切都运行良好且快速,但一段时间后,主站点上的 PHP 页面又开始变慢。如果我不重新启动 Apache,这种缓慢的过程需要一段时间(几分钟、几小时,取决于流量),在此期间,PHP 驱动的内容加载速度非常慢或在该站点上不可用。一段时间后,有时会一切都开始工作,并在一段时间内再次变快,然后再次变快。在流量较大的时段,PHP 内容加载缓慢或不可用,在流量较小的时段,它有时很快,有时比平时慢一点。同样,只有在那个主站点上,并且只有 PHP 驱动的页面,静态页面即使在流量最大的时段也运行快速,甚至使用相同 CMS 的其他站点也运行快速。
目前该网站有大约 7000 名独立访客,但即使每天有 11500 名访客,网站仍然运行良好。VPS 上所有网站的总访客数约为 17000 名(每个独立访客大约浏览 3 个页面)。
当网站在 Apache 状态下开始变慢时,我有时会看到类似这样的情况:
mod_fcgid 状态:
FastCGI 进程总数:37
进程:php5 (/usr/local/cpanel/cgi-sys/php5)Pid 活动 空闲 访问 状态
11300 39 28 7 工作
11274 47 28 7 工作
11296 40 29 3 工作
11283 45 30 3 工作
11304 36 31 1 工作
11282 46 32 3 工作
11292 42 33 1 工作
11289 44 34 1 工作
11305 35 35 0 工作
11273 48 36 2 工作
11280 47 39 1 工作
10125 133 40 12 退出(通讯错误)
11294 41 41 1 退出(通讯错误)
11277 47 42 2 退出(通讯错误)
11291 43 43 1 退出(通讯错误)
10187 108 43 10 退出(通讯错误)
10209 95 44 7 退出(通讯错误)
10171 113 44 5 退出(通讯错误)
11275 47 47 1 退出(通讯错误)
10144 125 48 8 退出(通讯错误)
10086 149 48 20 退出(通讯错误)
10212 94 49 5 退出(通讯错误)
10158 118 49 5 退出(通讯错误)
10169 114 50 4 退出(通讯错误)
10105 141 50 16 退出(通讯错误)
10094 146 50 15 退出(通讯错误)
10115 139 51 17 退出(通讯错误)
10213 93 51 9 退出(通讯错误)
10197 103 51 7 退出(通讯错误)
进程:php5 (/usr/local/cpanel/cgi-sys/php5)Pid 活动 空闲 访问 状态
7983 1079 2 149 就绪
7979 1079 11 151 就绪
进程:php5 (/usr/local/cpanel/cgi-sys/php5)Pid 活动 空闲 访问 状态
7990 1066 0 57 就绪
8001 1031 64 35 就绪
7999 1032 94 29 就绪
8000 1031 91 36 就绪
8002 1029 34 52 就绪
进程:php5 (/usr/local/cpanel/cgi-sys/php5)Pid 活动 空闲 访问 状态
7991 1064 29 115 准备就绪
当它正常工作时,没有“退出(通信错误)”的字样
Active 和 Idle 分别是活动时间和自上次请求以来的时间,以秒为单位。
这是系统信息。
系统信息:
处理器总数:8
处理器 #1 供应商 GenuineIntel 名称 Intel(R) Xeon(R) CPU E5440 @ 2.83GHz 速度 88.320 MHz 缓存 6144 KB
其余七个均相同。
系统信息
Linux vps.nnnnnnnnnnnnnnnnn.nnn 2.6.18-028stab099.3 #1 SMP 星期三 3 月 7 日 15:20:22 MSK 2012 x86_64 x86_64 x86_64 GNU/Linux
当前内存使用情况 总计 已用 空闲 共享缓冲区 缓存 内存:8388608 882164 7506444 0 0 0 -/+ 缓冲区/缓存:882164 7506444 交换:0 0 0 总计:8388608 882164 7506444
当前磁盘使用情况文件系统大小已使用可用使用率%安装在/dev/vzfs 100G 34G 67G 34% / 无
系统详细信息:
运行于:Apache/2.2.22 系统信息:(Unix)mod_ssl/2.2.22 OpenSSL/0.9.8e-fips-rhel5 DAV/2 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 mod_fcgid/2.3.6 技术支持:PHP/5.3.10
当前配置
默认 PHP 版本 (.php 文件) 5
PHP 5 处理程序 fcgi PHP 4 处理程序 suphp
Apache suEXEC 开启
Apache Ruid2 关闭
PHP 4 处理程序 supphp
Apache suEXEC 开启
Apache 配置
以下设置已保存:
fileetag:全部
keepalive:开启
保持活动超时:3
最大客户端数量:150
最大keepaliverequests:10
每个子项的最大请求数:10000
最大备用服务器数:10
最小备用服务器数:5
root_options:ExecCGI、FollowSymLinks、Includes、IncludesNOEXEC、Indexes、MultiViews、SymLinksIfOwnerMatch
服务器限制:256
服务器签名:关闭
服务器令牌:完整
sslciphersuite:全部:!ADH:RC4 + RSA:+高:+中:-低:-SSLv2:-EXP:!kEDH
启动服务器:5
超时:30
我希望我已经很好地解释了我的问题。
你能帮忙的话,我会很高兴。
答案1
检查数据库是否有错误,并确保数据库不太大。此外,当您开始发现速度变慢时,请查看数据库日志和 Apache 错误日志。
答案2
根据我使用 VPS 的经验,我会研究打开文件 (/sock) 限制。这些限制可能会导致奇怪的结果,尤其是在有大量可用资源的情况下挂起/拒绝输入/输出(例如您的通信错误)。