Apache 随机关闭并且无法重新启动。perl 进程使用端口 80。当我终止使用端口 80 的进程时,Apache 可以再次重新启动。
日志和结果:
tail -50 /var/log/httpd/error_log
[Sat Jan 07 00:11:01 2012] [notice] caught SIGTERM, shutting down
ns1:/proc/15852# fuser-n tcp 80
80/tcp: 6072 15849 15852
ns1:/proc/15852# ls -l
total 0
-r-------- 1 apache apache 0 2012-01-07 00:30 auxv
-r--r--r-- 1 apache apache 0 2012-01-07 00:24 cmdline
-rw-r--r-- 1 apache apache 0 2012-01-07 00:30 coredump_filter
-r--r--r-- 1 apache apache 0 2012-01-07 00:30 cpuset
lrwxrwxrwx 1 apache apache 0 2012-01-07 00:37 cwd -> /var/www/html/phpMyAdmin-2.11.5-all-languages
-r-------- 1 apache apache 0 2012-01-07 00:24 environ
lrwxrwxrwx 1 apache apache 0 2012-01-07 00:37 exe -> /usr/bin/perl
dr-x------ 2 apache apache 0 2012-01-07 00:37 fd
-r--r--r-- 1 apache apache 0 2012-01-07 00:30 io
-r-------- 1 apache apache 0 2012-01-07 00:30 limits
-rw-r--r-- 1 apache apache 0 2012-01-07 00:30 loginuid
-r--r--r-- 1 apache apache 0 2012-01-07 00:37 maps
-rw------- 1 apache apache 0 2012-01-07 00:30 mem
-r--r--r-- 1 apache apache 0 2012-01-07 00:30 mounts
-r-------- 1 apache apache 0 2012-01-07 00:30 mountstats
-rw-r--r-- 1 apache apache 0 2012-01-07 00:30 oom_adj
-r--r--r-- 1 apache apache 0 2012-01-07 00:30 oom_score
lrwxrwxrwx 1 apache apache 0 2012-01-07 00:37 root -> /
-r--r--r-- 1 apache apache 0 2012-01-07 00:30 schedstat
-r-------- 1 apache apache 0 2012-01-07 00:30 smaps
-r--r--r-- 1 apache apache 0 2012-01-07 00:24 stat
-r--r--r-- 1 apache apache 0 2012-01-07 00:30 statm
-r--r--r-- 1 apache apache 0 2012-01-07 00:24 status
dr-xr-xr-x 3 apache apache 0 2012-01-07 00:30 task
-r--r--r-- 1 apache apache 0 2012-01-07 00:30 wchan
ns1:/proc/15852#/etc/init.d/httpd 重启
Stopping httpd:
Starting httpd: Warning: DocumentRoot [/xxx/public_html] does not exist
Warning: DocumentRoot [/xxx/private_html] does not exist
[Sat Jan 07 00:48:37 2012] [warn] NameVirtualHost xx.xx.xx.xx:80 has no VirtualHosts
[Sat Jan 07 00:48:37 2012] [warn] NameVirtualHost xx.xx.xx.xx:443 has no VirtualHosts
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
随机,我的意思是,不确定的时间,有时晚上服务器流量很低。有时流量较大。
我不知道其他进程是否占用了端口 80,或者 apache 是否仍在使用端口 80。如果其他进程占用了端口 80,我想知道哪些进程占用了端口以及占用的原因。我该如何避免这种情况。
有问题的是 proc 目录 ls 进程的结果(pid 编号 15852)。此进程使用端口 80。也许它有助于识别问题。
在http 错误日志关于这个问题只有一行:
[Sat Jan 07 00:11:01 2012] [notice] caught SIGTERM, shutting down
---- 新编辑,问题再次发生。我尝试 netstat 命令,在这种情况下 pid id 为 7574 ----
netstat -tpnl | grep ":80" 结果:
ns1:~# netstat -tpnl | grep ":80"
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7574/apache3 -k sta
ns1:/proc/7574# more cmdline
/usr/sbin/apache3 -k start
ns1:/proc/7574# ls /usr/sbin/apache3
ls: cannot access /usr/sbin/apache3: No such file or directory