我正在运行一个 memcached 服务器,它为两个前端服务器提供服务。它们使用标准 PECL 库从 Apache2/PHP 连接到 memcached 服务器。
由于某种原因,服务器上的 memcached 消耗的 CPU 越来越多,直到达到 100%。
我正在使用以下参数运行 memcached:
/usr/bin/memcached -d -m 128 -p 11211 -u memcache -l 0.0.0.0
我发现的另一件有趣的事情是,前端服务器和 memcached 服务器之间有很多开放连接(200 个)
netstat -n
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 30 10.2.10.69:11211 10.2.10.193:49393 ESTABLISHED
tcp 0 30 10.2.10.69:11211 10.2.10.172:52918 ESTABLISHED
tcp 0 30 10.2.10.69:11211 10.2.10.193:39677 ESTABLISHED
tcp 0 30 10.2.10.69:11211 10.2.10.193:46480 ESTABLISHED
tcp 0 30 10.2.10.69:11211 10.2.10.172:58869 ESTABLISHED
tcp 0 30 10.2.10.69:11211 10.2.10.193:38498 ESTABLISHED
tcp 0 0 10.2.10.69:11211 10.2.10.193:54095 ESTABLISHED
tcp 0 30 10.2.10.69:11211 10.2.10.172:55895 ESTABLISHED
tcp 0 30 10.2.10.69:11211 10.2.10.193:38809 ESTABLISHED
...
其中大多数在“Send-Q”列中的值为“30”。这些连接在“ESTABLISHED”模式下存在几分钟,直到它们从 netstat 的输出中消失。这是什么意思?
还有我的 Memcached“统计数据”:
STAT pid 1183
STAT uptime 5087
STAT time 1398177110
STAT version 1.4.13
STAT libevent 2.0.16-stable
STAT pointer_size 64
STAT rusage_user 322.404149
STAT rusage_system 1055.877988
STAT curr_connections 164
STAT total_connections 28962
STAT connection_structures 291
STAT reserved_fds 20
STAT cmd_get 55986225
STAT cmd_set 22250
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 55891017
STAT get_misses 95208
STAT delete_misses 23066
STAT delete_hits 6277
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 966125003
STAT bytes_written 12255690623
STAT limit_maxbytes 134217728
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT expired_unfetched 0
STAT evicted_unfetched 0
STAT bytes 1898162
STAT curr_items 978
STAT total_items 22250
STAT evictions 0
STAT reclaimed 0
END
答案1
问题似乎不在于 memcached。连接数随着前端服务器上新创建的 apache 进程而增加,由于这些进程没有终止,因此它们仍保持与 memcached 服务器的连接。
所以我认为这是我的 Apache 服务器的问题并且它与这个主题不再相关。