使用 ulimit -ni 可以设置每个 shell 的最大打开文件限制
为了使该值持久,我可以在 /etc/security/limits.conf 中编辑它,然后重新启动 ubuntu 12.10 框,以下是配置
* soft nofile 10240
* hard nofile 10240
root soft nofile 10240
root hard nofile 10240
但上述值没有应用到memcached服务,如何使“最大打开文件数10240”应用到memcached服务。
即使设置了 limits.conf,memcached 仍然显示
xx@xx:~$ ps aux|grep mem
mysql 2044 0.0 0.0 327436 1260 ? Sl 17:09 0:00 /usr/bin/memcached -vv -m 256 -p 11211 -u mysql -l 0.0.0.0
xx@xx:~$ cat /proc/2044/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 30402 30402 processes
Max open files 1024 1024 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 30402 30402 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
请告诉我如何增加 memcached 服务的“最大打开文件数”
答案1
在 memcache 配置中,使用以下命令设置最大打开连接数:
-c 10240
listen_disabled_num
您可以通过在运行时检查来检查这是否确实有必要:
echo stats | nc localhost 11211
如果最大连接数是一个问题,那么您应该看到该值大于 0。
答案2
看来memcached
进程是由mysql
用户启动的。尝试明确limits.conf
向此用户添加规则(*
应适用于除 root 之外的所有用户,但尝试起来并不需要花费太多精力...)。
mysql soft nofile 10240
mysql hard nofile 10240
此外,我认为这些限制仅在 PAM 加载时才适用。检查是否有以下行/etc/pam.d/common-session
session required pam_limits.so
如果没有,请将其添加到最后。之后您可能需要重新启动才能看到应用的更改。