yum安装varnish 后service启动失败之解决办法
2013-07-08 10:28
543 查看
Varnish
running in foreground but fails to run as service/daemon
I had an annoying problem last week that turned out to be my own silly mistake. But since I couldn't quite find a lot of information on it, I'll sum it up here so I'll never forget it again.If I started a Varnish service in foreground mode, it worked like a charm -- if I tried it via the "service varnish start" or the init.d script, it kept failing. Stracing couldn't quite tell me what I was missing at first.
# varnishd -F -f /usr/local/etc/varnish/default.vcl
socket(): Address family not supported by protocol child (5214)
Started Child (5214) said Child starts Child (5214) said SMF.s0
mmap'ed 104857600 bytes of 104857600
^CManager got SIGINT => CTRL+C
killed Stopping Child
So foreground runs like a charm.
Yet the service kept failing on me.
# service varnish start
Starting Varnish Cache: [FAILED]
And when stracing, there's no real clue as to why it failed.
# strace -e trace=file service varnish star
execve("/sbin/service", ["service", "varnish", "start"], [/* 18 vars */]) = 0 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 open("/lib64/libtinfo.so.5″, O_RDONLY) = 3 open("/lib64/libdl.so.2″, O_RDONLY) = 3 open("/lib64/libc.so.6″, O_RDONLY) = 3 open("/dev/tty", O_RDWR|O_NONBLOCK) = 3 open("/usr/lib/locale/locale-archive", O_RDONLY) = 3 open("/proc/meminfo", O_RDONLY) = 3 stat("/root", {st_mode=S_IFDIR|0550, st_size=4096, ...}) = 0 stat(".", {st_mode=S_IFDIR|0550, st_size=4096, ...}) = 0 open("/usr/lib64/gconv/gconv-modules.cache", O_RDONLY) = 3 open("/sbin/service", O_RDONLY) = 3 open("/etc/init.d/functions", O_RDONLY) = 3 --- SIGCHLD (Child exited) @ 0 (0) --- stat("/etc/sysconfig/i18n", {st_mode=S_IFREG|0644, st_size=47, ...}) = 0 open("/dev/null", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3 open("/etc/profile.d/lang.sh", O_RDONLY) = 3 stat("/root/.i18n", 0x7fffa8819680) = -1 ENOENT (No such file or directory) stat("/etc/sysconfig/init", {st_mode=S_IFREG|0644, st_size=1153, ...}) = 0 open("/etc/sysconfig/init", O_RDONLY) = 3 open("/usr/share/locale/locale.alias", O_RDONLY) = 3 open("/usr/share/locale/en_US.UTF-8/LC_MESSAGES/initscripts.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/en_US.utf8/LC_MESSAGES/initscripts.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/en_US/LC_MESSAGES/initscripts.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/en.UTF-8/LC_MESSAGES/initscripts.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/en.utf8/LC_MESSAGES/initscripts.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/en/LC_MESSAGES/initscripts.mo", O_RDONLY) = -1 ENOENT (No such file or directory) --- SIGCHLD (Child exited) @ 0 (0) --- --- SIGCHLD (Child exited) @ 0 (0) --- chdir("/") = 0 stat("/etc/init.d/varnish", {st_mode=S_IFREG|0755, st_size=2851, ...}) = 0 stat(".", {st_mode=S_IFDIR|0555, st_size=4096, ...}) = 0 stat("/sbin/env", 0x7fffa881a600) = -1 ENOENT (No such file or directory) stat("/usr/sbin/env", 0x7fffa881a600) = -1 ENOENT (No such file or directory) stat("/bin/env", {st_mode=S_IFREG|0755, st_size=23832, ...}) = 0 stat("/bin/env", {st_mode=S_IFREG|0755, st_size=23832, ...}) = 0 access("/bin/env", X_OK) = 0 stat("/bin/env", {st_mode=S_IFREG|0755, st_size=23832, ...}) = 0 access("/bin/env", R_OK) = 0 stat("/bin/env", {st_mode=S_IFREG|0755, st_size=23832, ...}) = 0 stat("/bin/env", {st_mode=S_IFREG|0755, st_size=23832, ...}) = 0 access("/bin/env", X_OK) = 0 stat("/bin/env", {st_mode=S_IFREG|0755, st_size=23832, ...}) = 0 vaccess("/bin/env", R_OK) = 0 Starting Varnish Cache: [FAILED] --- SIGCHLD (Child exited) @ 0 (0) ---
What the strace doesn't show, is that when you start Varnish as a service, it reads an additional config file:/etc/sysconfig/varnish on CentOS/RHEL or/etc/default/varnish on Ubuntu/Debian systems. Chances are, if you can
run Varnish in the foreground but not as a service, and you're referring to the exact same VCLs, your problem is somewhere in the default configuration files that determine your service.
My problem turned out to be a missing directive in /etc/sysconfig/varnish that I overlooked.
By
Mattias Geniar
—Monday, November 28, 2011
Comment Feed
2 Responses
Safwan
—
Friday, April 5, 2013 @ 02:54 —
Reply
Hi,
I’m having the same problem. Could you tell me what ‘directive’ is missing from /etc/sysconfig/varnish… I tried everything and you seem to be the only person with the same problem.
Mattias
Geniar —
Friday, April 12, 2013 @ 17:55 —
Reply
Hi Safwan,
Apologies for the late reply, you may have already fixed it. Here’s an example config that works:
$ cat /etc/sysconfig/varnish | grep -v '^#' NFILES=131072 MEMLOCK=82000 RELOAD_VCL=1 VARNISH_VCL_CONF=/etc/varnish/default.vcl VARNISH_LISTEN_PORT=80 VARNISH_ADMIN_LISTEN_ADDRESS=0.0.0.0 VARNISH_ADMIN_LISTEN_PORT=6082 VARNISH_MIN_THREADS=1 VARNISH_MAX_THREADS=5000 VARNISH_THREAD_TIMEOUT=120 VARNISH_STORAGE_FILE=/var/lib/varnish/varnish_storage.bin VARNISH_STORAGE_SIZE=3G KINEPOLIS_VARNISH_STORAGE="file,/var/lib/varnish/varnish_storage.bin,3G" KINEPOLIS_CONNECT_TIMEOUT="connect_timeout=600" VARNISH_TTL=900 DAEMON_OPTS="-a ${VARNISH_LISTEN_ADDRESS}:${VARNISH_LISTEN_PORT} \ -f ${VARNISH_VCL_CONF} \ -T ${VARNISH_ADMIN_LISTEN_ADDRESS}:${VARNISH_ADMIN_LISTEN_PORT} \ -t ${VARNISH_TTL} \ -w ${VARNISH_MIN_THREADS},${VARNISH_MAX_THREADS},${VARNISH_THREAD_TIMEOUT} \ -u varnish -g varnish \ -s ${KINEPOLIS_VARNISH_STORAGE} \ -p ${KINEPOLIS_CONNECT_TIMEOUT} \ -p sess_workspace=262144 \ -p thread_pools=2 \ -p thread_pool_min=200 \ -p thread_pool_max=5000 \ -p thread_pool_add_delay=2 \ -p http_req_size=131072 \ -p http_req_hdr_len=49152 "
相关文章推荐
- windows process activation service不能安装或启动的解决办法
- windows process activation service不能安装或启动的解决办法
- 安装ArcGIS License 10.1 许可管理器 破解版 服务启动又失败的解决办法
- centos7 yum安装mysql5.x及启动失败解决
- 继续摘抄:安装bind后启动失败解决办法
- 出现windows启动服务失败(无法从命令行或调试器启动,需要安装InstallUtil.exe)的解决办法
- 安装ArcGIS License 10.1 许可管理器 破解版 服务启动又失败的解决办法
- docker.service启动失败:Unit not found的原因及解决办法
- ubuntu17.04或linux4.0.x安装VMware,VMware启动失败解决办法
- .安装 MySQL 5 后无法启动(不能 Start service) 的解决办法
- Win8安装APMServ提示“Apache启动失败,请检查相关配置”的解决办法。
- centos7 yum安装mysql5.x及启动失败解决
- centos7使用yum安装mariaDB(开源MySQL)无法启动的解决办法
- CentOS7安装vncserver(启动失败及连接黑屏解决办法)
- CentOS7安装vncserver(启动失败及连接黑屏解决办法)
- linux下安装MySQL安装 、启动失败 问题解决办法
- centos7中安装mysql的rpm包启动失败问题的原因和解决办法
- Fedora15 64bit 安装chromium 64bit 浏览器 启动失败 解决办法
- Oracle 11g安装出现:启动服务 OracleMTSRecoveryService 时出现操作系统错误 解决办法
- centos7使用yum安装mariaDB(开源MySQL)无法启动的解决办法