要进行远程调试,主要是对 Tomcat 和 Java进程 进行调试。以下是针对该系统的远程调试配置方法:
一、Tomcat远程调试配置
1. 修改Tomcat启动脚本
找到Tomcat的启动脚本(通常在/esafenet/tomcat/bin/catalina.sh或startup.sh):
bash
# 在catalina.sh中JAVA_OPTS配置部分添加调试参数
JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
或者直接在启动命令中添加:
bash
./catalina.sh jpda start
2. 使用JPDA启动(推荐)
修改/esafenet/tomcat/bin/catalina.sh:
bash
# 查找JPDA相关配置,通常在文件开头附近
JPDA_ADDRESS="5005"
JPDA_TRANSPORT="dt_socket"
然后在启动时使用:
bash
export JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=0.0.0.0:5005,server=y,suspend=n"
./catalina.sh jpda start
3. 在checkProcessAlive.sh中修改启动方式
如果您希望通过守护进程保持调试模式,可以修改脚本中的Tomcat启动部分:
bash
check_tomcat()
{
if [ -d $tomcat ]
then
sleep 10
tomcatpid=$(ps -ef | grep tomcat|grep -v grep |wc -l)
if [ $tomcatpid -eq 0 ]
then
echo "============Tomcat has been closed. Now start the Tomcat program with debug" >> $LOGFILE
cd $tomcat
# 添加调试参数启动
export CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
./startup.sh >$DEV_NULL 2>&1
# 或者使用JPDA模式
# ./catalina.sh jpda start >$DEV_NULL 2>&1
sleep 3
else
echo "======Tomcat is running normally" >> $LOGFILE
fi
fi
}
二、其他Java进程调试
1. Logstash调试
修改logstash启动部分:
bash
# 在check_logstash函数中修改
nohup $LOGSTASH_DIR_NEW/bin/logstash -f $LOGSTASH_DIR_NEW/config/log_logstash_es_company_linux.conf \
-J-Djruby.debug=true \
--log.level debug >$DEV_NULL 2>&1 &
2. Elasticsearch调试
bash
# 在check_es函数中修改
su - $EST_USER -c "/esafenet/elasticsearch/bin/elasticsearch -d \
-Enetwork.host=0.0.0.0 \
-Etransport.tcp.port=9300 \
-Ehttp.port=9200 \
-Enetwork.tcp.keep_alive=true"
三、IDE连接配置
IntelliJ IDEA配置
-
Run → Edit Configurations
-
Add New Configuration → Remote JVM Debug
-
配置参数:
Host: <服务器IP> Port: 5005 Command line arguments: 保持默认
Eclipse配置
-
Run → Debug Configurations
-
Remote Java Application → New
-
配置:
Host: <服务器IP> Port: 5005 Connection Type: Standard (Socket Attach)
四、防火墙配置
确保调试端口开放:
bash
# 开放5005端口
firewall-cmd --zone=public --add-port=5005/tcp --permanent
firewall-cmd --reload
# 或者临时开放
iptables -A INPUT -p tcp --dport 5005 -j ACCEPT
五、调试建议和注意事项
生产环境调试
-
安全考虑:生产环境慎用远程调试,建议:
- 在测试环境调试
- 使用VPN访问
- 调试后立即关闭端口
-
性能影响:
- 调试模式会降低性能
- 建议设置
suspend=n(不挂起启动)
调试脚本创建
您可以创建一个专门的调试启动脚本:
/esafenet/bin/start_debug.sh:
bash
#!/bin/bash
# 停止当前服务
/esafenet/bin/stop_all.sh
# 设置调试环境变量
export JAVA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
export CATALINA_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"
# 按顺序启动各服务(带调试)
check_mysql
check_es
sleep 5
check_tomcat
check_logstash
常用调试命令
bash
# 查看调试端口监听
netstat -tlnp | grep 5005
# 查看Java进程调试参数
ps -ef | grep java | grep jdwp
# 测试端口连通性
telnet <server_ip> 5005
六、故障排除
-
连接拒绝:
- 检查防火墙
- 确认Tomcat已启动调试模式
- 检查IP地址是否正确
-
连接超时:
- 检查网络连通性
- 确认端口未被占用
-
调试不生效:
- 重启Tomcat使配置生效
- 检查JAVA_OPTS是否正确设置
注意:在进行远程调试前,请确保:
- 有相应的系统权限
- 了解调试对系统的影响
- 生产环境调试需谨慎,建议先在测试环境验证
- 调试完成后恢复原配置