我有一个Drupal的网站,似乎有无数的性能问题。 大约5个月前,这个速度很慢。 我带来了一些为匿名访问者安装nginx的人,他们join了一些查询,这样他们就不会在页面加载时触发,并且帮我find了代码中的一些瓶颈。
大约一个月的时间,这个网站的速度明显加快了,尽pipe这个词没有任何“快”。 与此同时,我现在正在向Slicehost提出400美元/月的费用来托pipe一个每天less于5,000美元的独立网站。 是的,你没有看错。 去Drupal。
最近这个网站又开始崩溃,并且又一次缓慢。 我无法雇用人员进来,从上到下研究我的代码,并做出可能或不可能帮助的更改。 而且我不能在这个问题上投入更多的硬件。
所以我需要弄清楚自己是什么问题。 问题:
当Apache崩溃时,是否有可能找出导致它崩溃的原因? 必须有一个方法,对吧? 如果是这样,我该怎么做? 有我可以使用的软件,会告诉我哪个进程导致我的服务器死亡? (例如,“Apache因为某人访问过页面X而崩溃了”,或者“Apache因为从Feed X导入太多RSS项目而崩溃”)。
什么是一个好的,小白友好的方式来监视我目前的Apache性能? 我的开发者朋友告诉我“只使用Top,老兄”,但是Top显示了一些没有任何上下文的数字。 我不知道在Top中有什么合格的数字或者是一个好的数字,哪些stream程是相关的,哪些不是。 那里有noob友好的服务器监视工具吗? 理想情况下,我可以有一个页面给我一个关于apache如何执行的颜色代码指示器,然后向我显示一个进程或页面列表,现在正在吸取。 这样,我可以知道什么时候performance不好,然后是什么导致它如此糟糕。
为什么PHP内存很重要? 我显然有一个30MB的内存足迹。 如果我把这个数字下来,会跑得更快吗?
感谢您的任何build议。 我花了一年左右的时间试图提高我的广告收入,所以我可以聘请承包商解决我的performance困境。 我不想学习所有这些系统pipe理员伏都教。 我现在辞职了,可能没有select的事实。
Drupal可以很好地扩展; 与他们社区的一些网站pipe理员交谈,你会发现有些人定期超过这些数字,所以我不能说这是Drupal固有的问题。 一些事情浮现在脑海中:您是否启用了cachingfunction? 你确定它不是你的数据库(MySQL / Postgres等)? 你的网站运行什么样的硬件? 有没有其他网站吗? 请提供更多细节; 现在有太多未知的variables。
你并没有提供太多的技术信息,但Drupal(和其他大型PHP应用程序)的最简单和最有效的优化之一是使用APC,memcache或类似的。
单独的APC是非常容易安装,非常有效。 这里是我的设置,似乎适用于Drupal(在php.ini文件中):
extension=apc.so apc.apc.stat = 0 apc.include_once_override = 1 apc.shm_size = 90 realpath_cache_size = 256K realpath_cache_ttl = 180
apc.shm_size大小是最重要的(用于.php文件caching的服务器内存的最大MB)。 通常较小的尺寸就足够了,但如果这个caching太小,那么caching几乎是无用的。 对于大多数Drupal安装“50”就足够了。 但是,如果您在同一台服务器上安装了多个不在多站点的Drupal活动,则需要将其设置得更高。
如果您使用的是APC,则需要确保Zend Optimizerclosures,但它们不能很好地协同工作。 单独APC可以使页面加载速度提高30-40%。 如果shm设置得太低,页面加载速度不会增加。
另外,我想知道做初步优化的人是否知道Drupal,并且做了Drupal优化或只是一般的服务器的东西。 你可能有这些设置,但要确保你有admin/settings/performance正确的设置。 那是:
Caching mode: normal Page compression: enabled Optimize CSS files: enabled Optimize JavaScript files: enabled
所有这些都非常有效。
你也可能使用视图,可以在很多方面进行优化,但每个视图也可以有它的内部caching和caching生命周期。 如果你caching你的网页,并且用户大多是匿名的,它不会有很大的影响。
还有更多的方法来优化(你可能还应该学习pipe理的东西)。 如果admin/reports/dblog中的Drupal日志没有显示你正在寻找的错误,例如最致命的错误和“白屏错误”永远不会成功。
locate error.log或locate php.log并使用位置来查看最后的日志消息: sudo tail -n 100 /var/log/apache2/error.log < – 从我的服务器的示例path当您发现错误, 去谷歌上查询。
监控apache“top”不是很友好,但速度很快,可以运行在几乎所有的UNIX机器上。 我通常用它来查看apache2或mysql是否窒息。
内存使用情况如果“devel”模块告诉你一个页面加载大约需要30M,那么对于有很多模块的Drupal模块来说是非常正常的。 我有一些使用更多(如40M)的安装,但许多也使用较less。 我目前的项目使用每个普通的综合浏览量约20M。 取消激活不必要的模块(或切换到更有效的模块)是减less内存使用的一种方法。
而在php.ini,也确保'memory_limit'不是太低。 Drupal确实使用了大量的内存,例如所有的图像缩放操作都非常大。 默认是非常低的。 从理论上讲,你可能会安装35M,但我会设置它至less两倍,以确保所有的操作工作。 有些人可能不同意,但我通常超过100M。
如果你想做真正的核心Drupal优化,有很多指南,但这个网站可能是最彻底的: http : //2bits.com/articles/drupal-performance-tuning-and-optimization-for-large-web- sites.html
是的,如果你支付了这么多的托pipe,你应该可以聘请一个小时左右的专家:)。