我目前在一个中介DV服务器(基本)512MB专用内存,这是一个基于CentOS的VPS与Plesk和Virtuozzo。 我从第一天开始的经验一直不好,我只能通过caching“Band-Aids”来缓解我的服务器问题,但是我的网站并不像一年前那么小,所以问题恶化了。
我有3个Drupal安装在单独的(plesk)域上运行,其中1个Drupal安装是一个多站点,由5-6个站点组成,其中2个站点正在引入实际stream量。 我提到的caching“创可贴”是APC,它似乎最初帮助很大,而Drupal的Boost被认为是一个穷人的清漆,它使我的所有网页对于匿名用户都是静态的。 Google Ananlytics上的最近30天的综合估算值:90k人次的浏览量。
问题:很多停机时间,我一直在检查我的网站是否正常运行,最近我每天都在查找超过3次。 重新启动Apache将会恢复一段时间。 我有谷歌search每个错误消息,并寻找方法来优化我的DV服务器,我超越了残留什么是我的下一步行动。 这个服务器坏了,我打了一个不可能的低限制,比如12mb内核内存(kmemsize),是不是在我的端,我还需要优化一下吗?
*我已经提供尽可能多的信息,我可以在下面,任何帮助或build议,将不胜感激
我在日志中看到的常见错误消息:
[error] (12)Cannot allocate memory: fork: Unable to fork new process [error] make_obcallback: could not import mod_python.apache.\n Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line 21, in ? import traceback File "/usr/lib/python2.4/traceback.py", line 3, in ? import linecache ImportError: No module named linecache [error] python_handler: no interpreter callback found. [warn-phpd] mmap cache can't open /var/www/vhosts/***/httpdocs/*** - Too many open files in system (pid ***) [alert] Child 8125 returned a Fatal error... Apache is exiting! [emerg] (43)Identifier removed: couldn't grab the accept mutex [emerg] (22)Invalid argument: couldn't release the accept mutex
cat / proc / user_beancounters:
Version: 2.5 uid resource held maxheld barrier limit failcnt 41548: kmemsize 4582652 5306699 12288832 13517715 21105036 lockedpages 0 0 600 600 0 privvmpages 38151 42676 229036 249036 0 shmpages 16274 16274 17237 17237 2 dummy 0 0 0 0 0 numproc 43 46 300 300 0 physpages 27260 29528 0 2147483647 0 vmguarpages 0 0 131072 2147483647 0 oomguarpages 27270 29538 131072 2147483647 0 numtcpsock 21 29 300 300 0 numflock 8 8 480 528 0 numpty 1 1 30 30 0 numsiginfo 0 1 1024 1024 0 tcpsndbuf 648440 675272 2867477 4096277 1711499 tcprcvbuf 301620 359716 2867477 4096277 0 othersockbuf 4472 4472 1433738 2662538 0 dgramrcvbuf 0 0 1433738 1433738 0 numothersock 12 12 300 300 0 dcachesize 0 0 2684271 2764800 0 numfile 3447 3496 6300 6300 3872 dummy 0 0 0 0 0 dummy 0 0 0 0 0 dummy 0 0 0 0 0 numiptent 14 14 200 200 0
TOP:(在1月份,平均负载非常高,3-10,我现在可以把它放在目前的位置上,让APC更多的记忆力)
top - 16:46:07 up 2:13, 1 user, load average: 0.34, 0.20, 0.20 Tasks: 40 total, 2 running, 37 sleeping, 0 stopped, 1 zombie Cpu(s): 0.3% us, 0.1% sy, 0.0% ni, 99.7% id, 0.0% wa, 0.0% hi, 0.0% si Mem: 916144k total, 156668k used, 759476k free, 0k buffers Swap: 0k total, 0k used, 0k free, 0k cached
MySQLTuner :(优化每个表和修复任何表超过我得到的碎片计数降到86)
[--] Data in MyISAM tables: 285M (Tables: 1105) [!!] Total fragmented tables: 86 [--] Up for: 2h 44m 38s (409K q [41.421 qps], 6K conn, TX: 1B, RX: 174M) [--] Reads / Writes: 79% / 21% [--] Total buffers: 58.0M global + 2.7M per thread (100 max threads) [!!] Query cache prunes per day: 675307 [!!] Temporary tables created on disk: 35% (7K on disk / 20K total)
你内存不足(RAM)。
升级到1或2 GB应该可以大幅提升性能。
看起来你的成本增加了一倍或三倍,所以你可能想看看其他的VPS提供商。
如果你只使用VPS的Drupal网站,那么你可能会更好地运行Aegir,而不是像Plesk这样的全面的控制面板。 不知道是否或将节省多less资源,但可能值得考虑。
关于优化Drupal的最佳方法,有不less文章,但是通常会涉及到很多内容。 这个集合是一个好的开始。 但首先,确保你没有运行任何你不需要的模块。
你也可能想考虑是否把MySQL移到一个单独的服务器上(尽pipe可能不适用于Drupal,因为它倾向于使用数据库)。 如果您的大部分stream量都是匿名用户,那么可能需要考虑获取额外的服务器来运行caching转发代理和/或memcached。
但是这台服务器上的额外内存可能是最简单和最好的解决scheme。 对于运行一些相当大的Drupal站点的组合的Web / MySQL服务器,512Mb并不是很多。
升级很可能会解决您的问题,但可能没有必要。 如果你愿意在Linux中安装,你可以:
Aegir真的很好,但是如果你允许(shell / ftp / php)访问其他站点的话,这并不理想。 在你这样做之前阅读有关它。 Omega8.cc有一个“分发”,从零开始构buildAegir / Nginx,但它有一个非常激进的方法,并安装各种其他的零碎和碎片。 我不会build议,手工做东西。
简而言之,与Nginx / PHP-FPM / Aegir相比,Plesk / Apache2是一个资源pipe理器,在混合中抛出Varnish与Pressflow,你将拥有更小的内存使用量以及巨大的速度提升。 清漆本身不会吃太多的资源。
看到你使用Virtuozo / Plesk我假设你不能卸载你的控制面板。 使用Varnish和/或Nginx并简单地使用Apache作为后端可能仍然是非常不合理的。 但我不确定,我不是一个控制面板的人,它甚至可能甚至不能更改您的Web服务器侦听的端口。
你可以select一个更加自己动手的VPS(如果可能的话,不要使用Virtuozzo / OpenVZ),并试着让Nginx等人在这方面开展工作。 然后通过Aegir迁移您的网站。