盐城市转运信息网

liunx下centos7中tomcat报错访问域名超时的问题解决

2026-03-25 19:53:02 浏览次数:1
详细信息

一、网络层面排查

1. 检查网络连接

# 测试域名解析
ping yourdomain.com
nslookup yourdomain.com

# 检查端口连通性
telnet yourdomain.com 80
telnet yourdomain.com 443

# 使用netstat查看端口监听
netstat -tlnp | grep :80
netstat -tlnp | grep :443

2. 检查防火墙设置

# 查看防火墙状态
systemctl status firewalld

# 开放80/443端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload

# 查看已开放端口
firewall-cmd --list-ports

3. SELinux可能的问题

# 临时禁用SELinux(测试用)
setenforce 0

# 永久禁用(修改配置文件)
vi /etc/selinux/config
# 将SELINUX=enforcing改为SELINUX=disabled

二、Tomcat配置检查

1. 检查server.xml配置

<!-- 检查Connector配置 -->
<Connector port="80" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="443" />

<!-- 如果有HTTPS,检查SSL配置 -->
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" SSLEnabled="true">
    <SSLHostConfig>
        <Certificate certificateKeystoreFile="conf/keystore.jks"
                     type="RSA" />
    </SSLHostConfig>
</Connector>

2. 检查Host配置

<Host name="yourdomain.com" appBase="webapps"
      unpackWARs="true" autoDeploy="true">
    <Context path="" docBase="your-app" />
</Host>

三、应用服务器排查

1. 查看Tomcat日志

# 查看catalina日志
tail -f /usr/local/tomcat/logs/catalina.out

# 查看访问日志
tail -f /usr/local/tomcat/logs/localhost_access_log.*.txt

2. 检查JVM参数

# 查看JVM内存使用
ps aux | grep java
jstat -gcutil <pid> 1000 5

# 检查启动参数,调整内存配置
# 在catalina.sh中添加
JAVA_OPTS="-Xms512m -Xmx1024m -XX:MaxPermSize=256m"

3. 检查线程池配置

# 查看线程状态
ps -eLf | grep java | wc -l

# 检查系统限制
ulimit -u
cat /proc/$(pgrep java)/limits

四、域名和DNS检查

1. 检查域名解析

# 检查/etc/hosts
cat /etc/hosts

# 检查DNS配置
cat /etc/resolv.conf

# 清除DNS缓存(如果适用)
systemctl restart nscd

2. 绑定域名到IP

# 在/etc/hosts中添加
192.168.1.100 yourdomain.com www.yourdomain.com

五、系统资源检查

1. 检查系统资源

# 查看系统负载
top
htop

# 查看磁盘空间
df -h

# 查看内存使用
free -m

# 查看打开文件数
lsof | wc -l
ulimit -n

2. 优化系统参数

# 修改文件打开数限制
vi /etc/security/limits.conf
# 添加
* soft nofile 65535
* hard nofile 65535

# 修改系统参数
vi /etc/sysctl.conf
# 添加或修改
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.ip_local_port_range = 1024 65000

六、快速诊断脚本

创建一个诊断脚本 tomcat_check.sh

#!/bin/bash
echo "=== Tomcat访问超时诊断 ==="
echo "1. 检查Tomcat进程..."
ps aux | grep tomcat

echo -e "\n2. 检查端口监听..."
netstat -tlnp | grep java

echo -e "\n3. 检查防火墙..."
firewall-cmd --list-ports | grep -E "(80|443|8080)"

echo -e "\n4. 检查最近错误日志..."
tail -50 /usr/local/tomcat/logs/catalina.out | grep -i error

echo -e "\n5. 测试本地访问..."
curl -I http://localhost:8080

echo -e "\n6. 测试外部访问..."
curl -I --connect-timeout 10 http://yourdomain.com

七、常见问题解决方案

问题1:端口被占用

# 查找占用80端口的进程
lsof -i :80

# 停止占用进程或修改Tomcat端口

问题2:反向代理配置问题

如果使用Nginx/Apache反向代理:

# Nginx配置示例
location / {
    proxy_pass http://localhost:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_connect_timeout 300;
    proxy_send_timeout 300;
    proxy_read_timeout 300;
}

问题3:SSL证书问题

# 检查SSL证书
keytool -list -v -keystore keystore.jks

# 验证证书链
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com

问题4:连接数过多

<!-- 调整server.xml中的最大连接数 -->
<Connector port="8080" protocol="HTTP/1.1"
           maxThreads="500"
           minSpareThreads="25"
           maxConnections="1000"
           acceptCount="1000"
           connectionTimeout="20000" />

八、重启服务

# 重启Tomcat
systemctl restart tomcat

# 或手动重启
cd /usr/local/tomcat/bin
./shutdown.sh
./startup.sh

按照以上步骤逐一排查,通常可以解决Tomcat访问域名超时的问题。建议按照网络->防火墙->Tomcat配置->系统资源的顺序进行排查。

相关推荐