我使用 8 个线程启动了 memcached 服务器。然后我使用以下线程检查了线程ps -eLf | grep memcached
shantanu 2758 1 2758 0 10 11:17 ? 00:00:00 memcached -d -l 10.90.15.104 -p 11311 -t 8 -vv
shantanu 2758 1 2759 0 10 11:17 ? 00:00:00 memcached -d -l 10.90.15.104 -p 11311 -t 8 -vv
shantanu 2758 1 2760 0 10 11:17 ? 00:00:00 memcached -d -l 10.90.15.104 -p 11311 -t 8 -vv
shantanu 2758 1 2761 0 10 11:17 ? 00:00:00 memcached -d -l 10.90.15.104 -p 11311 -t 8 -vv
shantanu 2758 1 2762 0 10 11:17 ? 00:00:00 memcached -d -l 10.90.15.104 -p 11311 -t 8 -vv
shantanu 2758 1 2763 0 10 11:17 ? 00:00:00 memcached -d -l 10.90.15.104 -p 11311 -t 8 -vv
shantanu 2758 1 2764 0 10 11:17 ? 00:00:00 memcached -d -l 10.90.15.104 -p 11311 -t 8 -vv
shantanu 2758 1 2765 0 10 11:17 ? 00:00:00 memcached -d -l 10.90.15.104 -p 11311 -t 8 -vv
shantanu 2758 1 2766 0 10 11:17 ? 00:00:00 memcached -d -l 10.90.15.104 -p 11311 -t 8 -vv
shantanu 2758 1 2767 0 10 11:17 ? 00:00:00 memcached -d -l 10.90.15.104 -p 11311 -t 8 -vv
现在,如您所见,当 -t 设置为 8 时,显示线程数为 10。我不明白这一点。我在 ps 命令中犯了错误吗?请帮助我理解这种现象。
答案1
检查你的 memcached 统计数据,检查线程。
telnet localhost 11211
stats
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
默认情况下和所有其他设置下,我看到 memcached 为自己分配了 2 个线程,没有 -t 参数,所以我猜测 memcached 的工作原理是线程 = 2 +threads_configured。
尝试增加或减少以查看此解释是否适用于您的设置。
答案2
我认为有 2 个内部线程 + 4 个用于 TCP 的线程和 4 个用于 UDP 的线程:
echo "stats settings" | nc localhost 11211
...
STAT num_threads 4
STAT num_threads_per_udp 4