600多个memcache请求/问题 – 帮助!

我在我的服务器上运行memcached,当它达到600 + req / s时,它变得不稳定,并导致大量的问题。 当请求率变得很高时,随机时间我的PHP应用程序无法连接到memcache服务器,造成缓慢的加载时间,这使得nginx和php-fpm吓坏了,我收到了一堆104:连接重置我的nginx日志错误。

我想指出,在我的memcache服务器中,我有'热对象' – 有时会收到90%的memcache请求的对象。 我还注意到,如此多的请求碰到单个对象时,它稍微增加了整个页面的载入时间(当它设法加载时)。

我将不胜感激这个问题的任何帮助。 非常感谢!

这听起来像networking层的问题。 当你遇到这个问题,你可以抓住netstat -ano的输出,看看有多less连接在某些桶中? 如果你看到大量的连接不在ESTABLISHED中,而是在TIME_WAIT / FIN_WAIT等中,你可能需要等待重用和回收。 从:

http://www.speedguide.net/articles/linux-tweaking-121

TCP_TW_REUSE当从协议的angular度来看是安全的时候,这允许在TIME_WAIT状态中重新使用套接字用于新的连接。 默认值是0(禁用)。 对于tcp_tw_recycle通常是一个更安全的select

echo 1> / proc / sys / net / ipv4 / tcp_tw_reuse(boolean,默认值:0)

注意:tcp_tw_reuse设置在许多短连接打开并处于TIME_WAIT状态(如Web服务器)的环境中特别有用。 重新使用套接字可以非常有效地减less服务器负载。