You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bluemix CIO上Node.js定时任务运行3次后崩溃重启求助

排查Bluemix CIO部署后Node.js应用重复崩溃重启问题

我来帮你梳理这个问题的排查方向,先把你的场景和核心报错信息整理清楚:

问题背景

你开发了一个Node.js应用,通过定时任务(cron jobs)运行从远程UNIX服务器迁移过来的Python脚本——这个脚本在原服务器稳定运行,本地测试功能也正常,但部署到Bluemix CIO后,应用只能运行3次就崩溃重启,且该过程不断重复。

核心报错信息

从日志来看,崩溃的根源是Python脚本发起HTTPS请求时连接超时,具体报错如下:

APP/PROC/WEB/0 File "/home/vcap/deps/1/python/lib/python3.6/site-packages/urllib3/util/retry.py", line 388, in increment
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='9.16.172.220', port=9443): Max retries exceeded with url: /ibm/iis/igc-rest/v1/search/ (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 110] Connection timed out',))
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 在处理上述异常期间,又发生了另一个异常:
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 raise MaxRetryError(_pool, url, error or ResponseError(cause))
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 File "/home/vcap/deps/1/python/lib/python3.6/site-packages/urllib3/connectionpool.py", line 601, in urlopen
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 File "/home/vcap/deps/1/python/lib/python3.6/site-packages/urllib3/connection.py", line 284, in connect
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 self._validate_conn(conn)
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 chunked=chunked)
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 TimeoutError: [Errno 110] Connection timed out
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 在处理上述异常期间,又发生了另一个异常:
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 sock.connect(sa)
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 raise err
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 (self.host, self.port), self.timeout, **extra_kw)
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 ----- Python 回溯信息 -----
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 at ChildProcess.emit (events.js:214:7)
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 at emitTwo (events.js:126:13)
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 at ChildProcess. (/home/vcap/deps/0/node_modules/python-shell/index.js:89:9)
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 at terminateIfNeeded (/home/vcap/deps/0/node_modules/python-shell/index.js:98:28)
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 at PythonShell.parseError (/home/vcap/deps/0/node_modules/python-shell/index.js:184:17)
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 ^
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 throw err;
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 timeout=timeout
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 File "igc-cloudant_test.py", line 190, in 
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 _stacktrace=sys.exc_info()[2])
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 File "/home/vcap/deps/1/python/lib/python3.6/site-packages/urllib3/connectionpool.py", line 639, in urlopen
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 File "/home/vcap/deps/1/python/lib/python3.6/site-packages/requests/adapters.py", line 440, in send
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 回溯(最近的调用最先):
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 回溯(最近的调用最先):
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 在处理上述异常期间,又发生了另一个异常:
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 110] Connection timed out
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 File "/home/vcap/deps/1/python/lib/python3.6/site-packages/urllib3/connection.py", line 150, in _new_conn
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 conn = self._new_conn()
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 File "/home/vcap/deps/1/python/lib/python3.6/site-packages/urllib3/connectionpool.py", line 850, in _validate_conn
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0/home/vcap/app/server.js:42
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0Error: requests.exceptions.ConnectionError: HTTPSConnectionPool(host='9.16.172.220', port=9443): Max retries exceeded with url: /ibm/iis/igc-rest/v1/search/ (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 110] Connection timed out',))
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 File "/home/vcap/deps/1/python/lib/python3.6/site-packages/urllib3/connection.py", line 141, in _new_conn
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 File "/home/vcap/deps/1/python/lib/python3.6/site-packages/urllib3/util/connection.py", line 83, in create_connection
2018年5月11日 下午04:08:10.243 APP/PROC/WEB/0 File "/home/vcap/deps/1/python/lib/python3.6/site-packages/urllib3/util/connection.py", line 73, in create_connection

排查思路

1. 网络连通性验证

  • 先确认Bluemix CIO环境能否访问目标服务器9.16.172.220:9443:可以在应用容器内执行telnet 9.16.172.220 9443或curl -v https://9.16.172.220:9443/ibm/iis/igc-rest/v1/search/测试连通性。如果无法连接,大概率是网络策略限制(比如防火墙、安全组、Bluemix出站规则)导致的——原UNIX服务器可能在企业内网,能直接访问目标服务,而Bluemix的公共网络被目标服务器防火墙拦截。
  • 联系企业IT团队,确认是否需要将Bluemix的出口IP加入目标服务器的白名单。

2. 连接资源泄漏检查

  • 脚本运行3次后崩溃,可能是每次请求失败后未正确释放连接资源,导致连接池耗尽。检查Python脚本中的requests调用:是否用requests.Session()复用连接?是否在请求后关闭了连接?
  • 查看Node.js端调用Python脚本的逻辑:是否每次运行后都正确回收了子进程资源?有没有子进程泄漏导致应用资源耗尽的情况?

3. Bluemix资源限制排查

  • 检查Bluemix给你的应用分配的内存、CPU资源是否足够:在Bluemix控制台查看应用的资源监控数据,看3次运行后是否达到了资源阈值(比如内存占满),触发平台自动重启。
  • 确认定时任务的频率是否过高,短时间内资源占用累积超过限制。

4. SSL证书信任问题

  • 目标服务用HTTPS,检查Bluemix环境的Python是否信任目标服务器的SSL证书:如果是自签名证书,要么在脚本中临时关闭验证(仅测试用,不推荐生产),要么将CA证书导入应用的信任存储。
  • 测试代码示例:requests.get(url, verify=False),如果能成功连接,说明是证书信任问题。

5. 异常捕获与进程稳定性优化

  • Bluemix默认会在应用崩溃后自动重启,核心是要避免Node.js进程因Python脚本的错误而崩溃。在Node.js代码中添加异常捕获逻辑:
const { PythonShell } = require('python-shell');

PythonShell.run('igc-cloudant_test.py', null, function (err, results) {
  if (err) {
    console.error('Python脚本执行出错:', err);
    // 这里添加错误处理:比如记录日志、延迟重试,不要直接抛出错误导致进程崩溃
    return;
  }
  console.log('脚本执行结果:', results);
});

6. 目标服务限流策略确认

  • 联系目标服务9.16.172.220:9443的管理员,确认是否有限流规则(比如限制同一IP的请求次数)。原服务器可能在白名单内,而Bluemix的出口IP不在,导致3次请求后被限流,后续请求超时。

内容的提问来源于stack exchange,提问作者Vijay Sarathy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:36:00