连接关闭导致运行的程序挂掉问题解决

若在连接的远程服务器终端运行程序如下,会由于程序运行时间过长、空闲时间超过60分钟而导致终端窗口关闭,从而导致程序运行失败:

python3 run.py

在这里插入图片描述
为避免上述问题的出现,可实现如下命令在后台运行程序:

  1. 在后台运行python脚本run.py,即使关闭终端也不会停止
  2. 实时将程序的标准输出和错误输出写入到output.log文件中
nohup python3 -u run.py > output.log 2>&1 &
  • nohup:不挂断,让程序在后台运行,即使关闭了终端窗口,程序也不会停止运行
  • python3 -u run.py:运行python脚本命令,-u表示不要缓存标准输入和输出,以便实时输出到日志文件
  • “>”:表示重定向符号,将程序的标准输出重定向到指定文件
  • output.log:保存程序输出的日志文件名
  • “2>&1”: 将程序的标准错误输出重定向到标准输出。错误信息也会被写入到output.log文件中
  • &:将程序放到后台运行
### MySQL 数据库连接断开解决方案 对于MySQL数据库连接后立即断开的问题,通常由多种因素引起。一种常见情况是由于网络稳定导致通信链路失败,这会在尝试建立新连接时引发`com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure`异常[^2]。 为了处理这类问题并确保应用程序能够稳定运行,可以采取以下措施: #### 调整服务器端参数 调整MySQL服务端超时参数有助于防止因长时间无操作而导致的意外断连现象。可以通过修改全局变量`wait_timeout`和`interactive_timeout`来延长允许的最大空闲时间长度。这两个参数分别控制非交互式会话以及命令行工具等交互环境下的最大活动期限,默认值通常是28,800秒(即8小时)[^1]。 ```sql SET GLOBAL wait_timeout = 60*60*24; -- 设置为一天 SET GLOBAL interactive_timeout = 60*60*24; ``` #### 使用持久化连接(Persistent Connections) 启用持久化的数据库链接可以在一定程度上减少频繁创建销毁物理socket带来的性能损耗,并且降低因为瞬态网络波动造成的短时间内的连接丢失风险。PHP中可通过添加`PDO::ATTR_PERSISTENT => true`选项实现;而对于Java应用,则需查阅对应JDBC驱动文档了解如何开启此特性。 #### 实施重试机制(Retry Mechanism) 在客户端代码层面加入合理的错误恢复逻辑也十分必要。当检测到连接中断事件发生时,应该设计一套有效的重试策略,在适当的时间间隔内重复发起新的连接请求直到成功为止。同时配合使用心跳包保持活跃状态能进一步提高稳定性。 #### 配置连接池(Connection Pool Configuration) 采用合适的连接管理组件如HikariCP、C3P0或Druid可以帮助优化资源利用率的同时规避潜在的风险点。特别是针对MySQL自带的8小时自动关闭行为,合理配置最小/最大池大小(`minPoolSize/maxPoolSize`)、闲置驱逐线程周期(`idleConnectionTestPeriod`)等相关属性可有效缓解此类状况的发生[^3]。 ```properties # HikariCP example configuration properties file snippet hikari.minimumIdle=5 hikari.maximumPoolSize=10 hikari.idleTimeout=600000 # 10 minutes hikari.connectionTimeout=30000 hikari.validationTimeout=250 hikari.leakDetectionThreshold=2000 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值