|
前几天修改apache配置引起的apache连接resin问题。详细现象如下:
停止、开启apache时,分别在apache/logs/error_log中打印如下两行。
[notice] caught SIGTERM, shutting down
[notice] Apache/2.2.9 (Unix) Resin/3.1.6 configured -- resuming normal operations
问题发生过程:
- 修改配置之前apache+resin运行很正常。apache运行时间较长了(两个月以上)
- 修改apache配置conf/httpd.conf,重启apache,出现503错误。估计需要重启resin,重启后,还是一样
- 恢复原来的apache配置,重启,还是一样的错误,访问resin的8080端口,服务正常
- 查找很久问题......... 网上也看到一些这种问题,没有找到答案,有人建议reboot机器,信以为真,结果还是有问题
- 重新换一个apache,问题依旧。去掉resin,直接使用apache,服务正常。
到此:apache单独使用正常!resin单独使用正常!问题应该出现在apache和resin的连接模块上。
- 重新编译连接模块,还是有问题
- 换一个新版本的resin,编译连接模块,还是有问题。到这里很是郁闷了!
- 仔细回想对服务器做过的修改,查看apache的80端口开着,resin的6800端口也开着。突然想起前端时间对/etc/hosts 做了一些修改,将127.0.0.1 localhost.localdomain localhost 换成了外网地址。顿悟!再查看resin的6800是绑定在127.0.0.1上。在本机telnet 本机的外网地址 6800,果然被拒绝!问题总算找到: 问题
resin的6800绑定在127.0.0.1上,而apache连接的是的外网地址的6800
将/etc/hosts修改回127.0.0.1,重启apache,访问,问题果然解决。
- 但是另机台机器的/etc/hosts也是使用的外网地址,为什么就行呢?这几天机器的resin的6800也是绑定在127.0.0.1上,telnet 本机的外网地址 6800也是被拒绝!在同事的查看下,在apache的httpd.conf中apache resin配置 写道
LoadModule caucho_module /app/soft/httpd-2.2.9/modules/mod_caucho.so
ResinConfigServer localhost 6800
CauchoConfigCacheDirectory /tmp
CauchoStatus yes
倒数第二行的/tmp目录藏着秘密。里面有个文件:localhost_6800
- 这个是配置的cache文件,删除了这个文件,再重启这机台机器,就出现无法连接6800的现象。将/etc/hosts改回127.0.0.1,重启apache,问题解决
这个说明apache确实使用的是这个缓存文件。
问题重现:(原来的/etc/hosts还是127.0.0.1)【正常的机器】
- 启动resin、启动apache,apache连接127.0.0.1 6800,成功!生成缓存文件localhost_6800
- 修改/etc/hosts
- 修改apache的httpd.conf,重启apche,apache使用/tmp/localhost_6800,所有就没用外网地址的6800,连接成功!服务正常
问题重现:(原来的/etc/hosts还是127.0.0.1)【出现503错误的机器】
- 启动resin、启动apache,apache连接127.0.0.1 6800,成功!生成缓存文件localhost_6800
- 修改/etc/hosts
- 修改apache的httpd.conf,重启apche,apache没有使用/tmp/localhost_6800(可能是被修改、可能apache要更新这个文件,总之apache没有使用这个文件)。apache连接外网地址的6800,连接失败!出现我遇到的503错误。
|
|
|