我在Debian 7服务器上运行Graphite 0.9.12。
最近我在碳缓存的日志中发现了错误,说“打开文件太多了”#34;根据carbon-cache的网站,我需要增加碳缓存的nofile限制。 http://graphite.readthedocs.org/en/latest/carbon-daemons.html
所以我增加了系统范围和每个进程的限制:
cat /proc/sys/fs/file-max
5000000
在/etc/security/limits.conf中
* hard nofile 1000000
* soft nofile 1000000
root soft nofile 1000000
root hard nofile 1000000
www-data soft nofile 1000000
www-data hard nofile 1000000
使用ulimit命令,我可以确认root / me / www-data的文件限制已经增加。
我多次重启碳缓存。但是,碳缓存的每进程文件限制不会增加,仍为1024:4096
Max open files 1024 4096 files
我使用/etc/init.d/carbon-cache启动脚本重新启动碳缓存,sudo service carbon-cache restart
(或停止然后启动)
脚本是:
#!/bin/sh
### BEGIN INIT INFO
# Provides: carbon-cache
# Required-Start:
# Required-Stop:
# Default-Start:
# Default-Stop:
# Short-Description: initscript for runit-managed carbon-cache service
### END INIT INFO
# Author: Opscode, Inc. <cookbooks@opscode.com>
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="runit-managed carbon-cache"
NAME=carbon-cache
RUNIT=/usr/bin/sv
SCRIPTNAME=/etc/init.d/$NAME
# Exit if runit is not installed
[ -x $RUNIT ] || exit 0
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME"
$RUNIT start $NAME
[ "$VERBOSE" != no ] && log_end_msg $?
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
$RUNIT stop $NAME
[ "$VERBOSE" != no ] && log_end_msg $?
;;
status)
$RUNIT status $NAME && exit 0 || exit $?
;;
reload)
[ "$VERBOSE" != no ] && log_daemon_msg "Reloading $DESC" "$NAME"
$RUNIT reload $NAME
[ "$VERBOSE" != no ] && log_end_msg $?
;;
force-reload) ................ SO ON
有谁知道如何让碳缓存应用我的新nofile限制?我应该修改启动脚本还是做其他事情?
=============================================== ================
更新
我发现另一个文件可能与我的系统有关。 /etc/sv/carbon-cache/run
。
最初,内容显示为:
#!/bin/sh
exec 2>&1
exec chpst -u www-data -l /opt/graphite/storage/carbon-cache.lock -- /opt/graphite/bin/carbon-cache.py --pid /opt/graphite/storage/carbon-cache-a.pid --debug start
我将文件编辑为:
#!/bin/sh
ulimit -n 999999
exec 2>&1
exec chpst -o 999999 -u www-data -l /opt/graphite/storage/carbon-cache.lock -- /opt/graphite/bin/carbon-cache.py --pid /opt/graphite/storage/carbon-cache-a.pid --debug start
现在在/ proc / pid / limits中,软限制和硬限制均为999999.
答案 0 :(得分:0)
使用ulimit命令,您可以更改软限制 当前shell环境,以及以root身份运行时的硬限制。
init.d中的脚本以新的shell env(session)开头,必须再次应用ulimit。您可以在/etc/init.d/carbon-cache
语句之前添加case
,例如:
ulimit -n 999999
这将为每个开始/重新启动/重新加载/等等的当前(init.d start
)会话新限制设置。限制从父进程继承到其子进程,因此碳缓存也会受到影响。
修改强>
使用ulimit -H
是主管吗?如果是,请在/etc/supervisor/supervisord.conf
部分的[supervisord]
中添加minfs。
minfds=10000