您好我有一个Apache(PHP)(magento)脚本的服务器2.2。
在正常情况下,一个PHP页面在1-2秒内渲染,这是可以的。
有时在高stream量或粗糙的蜘蛛机器人所有的Apache插槽被阻止。
单个请求的运行速度很慢,并且使用越来越多的内存,直到mysql调用oom-killer,这杀死了我需要的tomcat。
首先我尝试了mod_evasive。 但是,如果我configuration它太严格,我不能浏览活泼,如果我configuration它太松,请求可以来得更快,那么他们可以被处理。
问题是PHP文件。 其他资源,如图像等不会妨碍插槽。
其次我试图通过降低MaxClients来限制它。 但是现在一个客户端可以阻止所有的插槽。
任何想法如何限制每个客户端的最大连接数或更好的最大simultan PHP脚本每IP …
如何configuration其他的Apache客户端,以避免更多的请求比他们可以处理,而不偏袒任何客户端?
把你的网站放在一个起源CDN( Cloudflare作为一种select,作为一种select,还有别的)。
在正常情况下,一个PHP页面在1-2秒内渲染,这是可以的。
不,这不对。
优化您的代码,使其不会花费两秒时间来生成页面。
然后caching所有的东西。
如果你还没有,把你的数据库服务器closures到一个单独的服务器上,为它指定一个内存量和超高速磁盘,然后将它们从表中caching下来。 Magento在连接等方面是一个贱货,所以你需要你的数据库服务器非常快速。
因此,当用户查看您的网站时,内容将从某处caching中取出,而不必每次生成。
我冒昧地在您的网站上运行Yslow。 以下是发现的总结(尽pipe你自己应该这样做)
总的YSlow等级D.我开始怀疑你的问题是不是完全服务器端,但可以做一个该死的好摆弄,并得到你的YSlow评级。 因为这样,a)从Apache服务器提供更less的stream量。 b)加载速度更快,所以您的访问者不会长时间lockingApache进程。
一般来说,如果magento运行缓慢或者每隔一段时间就会杀死您的服务器,那么您的服务器将会运行得更好,并且具有更高的RAM / CPU功耗。 你可以调整你的服务器运行magento顺利,但它需要一段时间和b)必要的(服务器端)资源。
你做了多less次数据库调整? magento是PITA,但可以configuration为快速,给予足够的RAM。
使用像mysql_tuner或mysql调优的入门工具来调整你的数据库。
并尽可能多地使用caching。 我不记得,如果支持APC; memcache更好。
你还应该留意IOWAIT,这是对非常不好的高清performance – 可能有不同的原因。
编辑:
如何configuration其他的Apache客户端,以避免更多的请求比他们可以处理,而不偏袒任何客户端? /我想知道其他apaches如何处理情况,当他们得到更多的请求比他们可以处理
通常你会扩大你的设置,取决于预期的stream量。 如果你的服务器在蜘蛛和爬虫被击中时发生故障,你可能有一些性能很差的脚本,或者你的服务器很小。
当我期望在我的服务器上的1000个用户,我使用一个服务器,可以处理5000个客户端(我监测max_clients达到error.log)
限速是可能的,但是你可以像使用mod_evasive一样进行相同的操作。 它确实有助于像DDOS这样的术语,但如果您需要调整您的设置,则不会。