brookshi / Hitchhiker

a Restful Api test tool
http://www.hitchhiker-api.com
Other
2.19k stars 402 forks source link

Docker 版启动不正常 #268

Closed NHZEX closed 5 years ago

NHZEX commented 5 years ago

启动打开页面,点击任何按钮都会转圈,请求一直等待,无响应。 已查看数据库,表没有创建来 pm2 restart index 已经尝试无效,表一样无法创建。

系统:Ubuntu 16.04.4 LTS 构建配置:

ersion: '2'
services:
  hitchhiker:
    image: brookshi/hitchhiker:v0.14
    container_name: hitchhiker
    environment:
      - HITCHHIKER_STRESS_TYPE=node
      - HITCHHIKER_APP_LANG=zh
      - HITCHHIKER_APP_HOST=http://192.168.10.167:3200/
      - HITCHHIKER_DB_HOST=192.168.1.167
      - HITCHHIKER_DB_PORT=3306
      - HITCHHIKER_DB_USERNAME=_hitchhiker
      - HITCHHIKER_SCHEDULE_STORE_LIMIT=50
      - HITCHHIKER_SCHEDULE_STORE_UNIT=count
      - HITCHHIKER_STRESS_COUNT=5
      - HITCHHIKER_SYNC_INTERVAL=30
      - HITCHHIKER_SYNC_ONOFF=1
      - MYSQL_DATABASE=_hitchhiker
      - MYSQL_ROOT_PASSWORD=rd7mXiRcandST2iS
    ports:
      - "3200:3200"
      - "11010:11010"
    volumes:
      - /home/ubuntu/hitchhiker/data:/usr/src/Hitchhiker/build/global_data/project
      - /home/ubuntu/hitchhiker/backup:/usr/src/Hitchhiker/build/backup
      - /home/ubuntu/hitchhiker/logs:/usr/src/Hitchhiker/build/logs

运行日志

[2018-10-17 09:07:09.020] [INFO] default - schedule start.
[2018-10-17 09:07:09.020] [INFO] default - get all schedule.
[2018-10-17 09:07:46.673] [ERROR] default - nodejs stress process - error: Error: connect ETIMEDOUT 192.168.10.167:11010
[2018-10-17 09:07:46.674] [ERROR] default - nodejs stress process - close 1006: 
[2018-10-17 09:07:46.674] [INFO] default - will retry.
[2018-10-17 09:08:09.021] [INFO] default - schedule start.
[2018-10-17 09:08:09.021] [INFO] default - get all schedule.
[2018-10-17 09:08:58.869] [INFO] default - create process manager for /usr/src/Hitchhiker/build/run_engine/process/stress_nodejs_worker.js
[2018-10-17 09:08:58.931] [INFO] default - stress nodejs worker process created
[2018-10-17 09:08:58.940] [INFO] default - stress nodejs worker process created
[2018-10-17 09:09:03.022] [INFO] default - schedule start.
[2018-10-17 09:09:03.026] [INFO] default - get all schedule.
[2018-10-17 09:09:03.176] [INFO] default - stress process start
[2018-10-17 09:09:03.180] [INFO] default - stress - create socket server
[2018-10-17 09:09:03.187] [INFO] default - stress - user message
[2018-10-17 09:09:03.187] [INFO] default - stress - user start
[2018-10-17 09:09:03.187] [INFO] default - stress - user message
[2018-10-17 09:09:03.187] [INFO] default - stress - user init
[2018-10-17 09:09:03.188] [INFO] default - stress 8 - send msg to user vFmli9vqW
[2018-10-17 09:09:03.188] [INFO] default - stress 8 - send msg to user vFmli9vqW
[2018-10-17 09:09:03.416] [INFO] default - worker 69 start
[2018-10-17 09:09:03.621] [INFO] default - worker 63 start
。。。。#注册账号开始
[2018-10-17 09:09:17.227] [INFO] default - stress - user message
[2018-10-17 09:09:17.227] [INFO] default - stress - user close
[2018-10-17 09:09:17.783] [INFO] default - stress - user message
[2018-10-17 09:09:17.783] [INFO] default - stress - user init
[2018-10-17 09:09:17.783] [INFO] default - stress 8 - send msg to user 5xuXmE6lQ
[2018-10-17 09:09:17.783] [INFO] default - stress 8 - send msg to user 5xuXmE6lQ
[2018-10-17 09:10:03.155] [INFO] default - schedule start.
[2018-10-17 09:10:03.155] [INFO] default - get all schedule.
[2018-10-17 09:11:03.158] [INFO] default - schedule start.
[2018-10-17 09:11:03.158] [INFO] default - get all schedule.
[2018-10-17 09:11:06.227] [ERROR] default - nodejs stress process - error: Error: connect ETIMEDOUT 192.168.10.167:11010
[2018-10-17 09:11:06.228] [ERROR] default - nodejs stress process - close 1006: 
[2018-10-17 09:11:06.228] [INFO] default - will retry.
[2018-10-17 09:12:03.161] [INFO] default - schedule start.
[2018-10-17 09:12:03.161] [INFO] default - get all schedule.
[2018-10-17 09:13:03.162] [INFO] default - schedule start.
[2018-10-17 09:13:03.162] [INFO] default - get all schedule.
[2018-10-17 09:13:23.570] [ERROR] default - nodejs stress process - error: Error: connect ETIMEDOUT 192.168.10.167:11010
[2018-10-17 09:13:23.570] [ERROR] default - nodejs stress process - close 1006: 
[2018-10-17 09:13:23.570] [INFO] default - will retry.
[2018-10-17 09:14:03.163] [INFO] default - schedule start.
[2018-10-17 09:14:03.164] [INFO] default - get all schedule.
[2018-10-17 09:15:03.166] [INFO] default - schedule start.
[2018-10-17 09:15:03.166] [INFO] default - get all schedule.
[2018-10-17 09:15:40.785] [ERROR] default - nodejs stress process - error: Error: connect ETIMEDOUT 192.168.10.167:11010
[2018-10-17 09:15:40.785] [ERROR] default - nodejs stress process - close 1006: 
[2018-10-17 09:15:40.785] [INFO] default - will retry.
brookshi commented 5 years ago

其他是否有数据库连不上之类的错误呢,配置看起来没啥问题

NHZEX commented 5 years ago

其他是否有数据库连不上之类的错误呢,配置看起来没啥问题

还有一个特征: 首次启动的第一次访问总是显示 Internal Server Error,在刷新一次页面才加载。

除了 log_file.log 还有其他日志么。 附一些测试数据,看起来容器内与数据库连接是正常的。

root@bbcafe2ff5c6:/usr/src/Hitchhiker/build# telnet 192.168.138.167 3306
bash: telnet: command not found
root@bbcafe2ff5c6:/usr/src/Hitchhiker/build# curl
curl: try 'curl --help' or 'curl --manual' for more information
root@bbcafe2ff5c6:/usr/src/Hitchhiker/build# env
NODE_VERSION=7.10.1
HITCHHIKER_APP_LANG=zh
HOSTNAME=bbcafe2ff5c6
TERM=xterm
HITCHHIKER_SYNC_ONOFF=1
MYSQL_DATABASE=_hitchhiker
HITCHHIKER_DB_PORT=3306
HITCHHIKER_DB_HOST=192.168.138.167
NPM_CONFIG_LOGLEVEL=info
HITCHHIKER_DB_USERNAME=_hitchhiker
HITCHHIKER_APP_HOST=http://192.168.138.167:3200/
HITCHHIKER_SYNC_INTERVAL=30
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/usr/src/Hitchhiker/build
HITCHHIKER_STRESS_COUNT=5
HITCHHIKER_STRESS_TYPE=node
HITCHHIKER_SCHEDULE_STORE_LIMIT=50
SHLVL=1
HOME=/root
YARN_VERSION=0.24.4
MYSQL_ROOT_PASSWORD=rd7mXiRcandST2iS
HITCHHIKER_SCHEDULE_STORE_UNIT=count
_=/usr/bin/env
root@bbcafe2ff5c6:/usr/src/Hitchhiker/build# curl 192.168.138.167:3306
5.7.22-log䳆xZWntÿ񫃿xot packets out of orderroot

配置与上面不一样是因为换网关了,忽略忽略。。。

brookshi commented 5 years ago

看日志另外还有 pm2 logs, 或者在host: docker logs [容器名],可以试试看

brookshi commented 5 years ago

pm2 相关的命令需要在容器内部执行哦

NHZEX commented 5 years ago

pm2 相关的命令需要在容器内部执行哦

pm2 logs 之前尝试过不成功,不知道为什么

root@bbcafe2ff5c6:/usr/src/Hitchhiker/build# pm2 logs
[TAILING] Tailing last 15 lines for [all] processes (change the value with --lines option)
[PM2][ERROR] No file to stream for app [all], exiting.

docker logs 看到错误了

[2018-10-18T02:09:16.764Z] PM2 log: Launching in no daemon mode
[2018-10-18T02:09:16.899Z] PM2 log: Starting execution sequence in -fork mode- for app name:index id:0
[2018-10-18T02:09:16.914Z] PM2 log: App name:index id:0 online
[2018-10-18 02:09:24.431] [ERROR] console - (node:42) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: ER_ACCESS_DENIED_ERROR: Access denied for user '_hitchhiker'@'172.18.0.2' (using password: YES)
[2018-10-18 02:09:24.432] [ERROR] console - (node:42) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
[2018-10-18 02:13:43.297] [ERROR] console - 
[2018-10-18 02:13:43.301] [ERROR] console -   Error: ER_ACCESS_DENIED_ERROR: Access denied for user '_hitchhiker'@'172.18.0.2' (using password: YES)
      at Handshake.Sequence._packetToError (/usr/src/Hitchhiker/node_modules/mysql/lib/protocol/sequences/Sequence.js:52:14)
      at Handshake.ErrorPacket (/usr/src/Hitchhiker/node_modules/mysql/lib/protocol/sequences/Handshake.js:103:18)
      at Protocol._parsePacket (/usr/src/Hitchhiker/node_modules/mysql/lib/protocol/Protocol.js:280:23)
      at Parser.write (/usr/src/Hitchhiker/node_modules/mysql/lib/protocol/Parser.js:75:12)
      at Protocol.write (/usr/src/Hitchhiker/node_modules/mysql/lib/protocol/Protocol.js:39:16)
      at Socket.<anonymous> (/usr/src/Hitchhiker/node_modules/mysql/lib/Connection.js:103:28)
      at emitOne (events.js:96:13)
      at Socket.emit (events.js:191:7)
      at readableAddChunk (_stream_readable.js:178:18)
      at Socket.Readable.push (_stream_readable.js:136:10)
      --------------------
      at Protocol._enqueue (/usr/src/Hitchhiker/node_modules/mysql/lib/protocol/Protocol.js:141:48)
      at Protocol.handshake (/usr/src/Hitchhiker/node_modules/mysql/lib/protocol/Protocol.js:52:41)
      at PoolConnection.connect (/usr/src/Hitchhiker/node_modules/mysql/lib/Connection.js:130:18)
      at Pool.getConnection (/usr/src/Hitchhiker/node_modules/mysql/lib/Pool.js:48:16)
      at /usr/src/Hitchhiker/src/driver/mysql/MysqlDriver.ts:162:23
      at MysqlDriver.<anonymous> (/usr/src/Hitchhiker/src/driver/mysql/MysqlDriver.ts:159:16)
      at step (/usr/src/Hitchhiker/node_modules/typeorm/driver/mysql/MysqlDriver.js:32:23)
      at Object.next (/usr/src/Hitchhiker/node_modules/typeorm/driver/mysql/MysqlDriver.js:13:53)
      at /usr/src/Hitchhiker/node_modules/typeorm/driver/mysql/MysqlDriver.js:7:71
      at __awaiter (/usr/src/Hitchhiker/node_modules/typeorm/driver/mysql/MysqlDriver.js:3:12)
[2018-10-18 02:13:43.301] [ERROR] console 
NHZEX commented 5 years ago

发现问题了,创建用户 _hitchhiker 时现在任意主机访问,数据库连不上 🤣 可以改进下错误显示,😀

NHZEX commented 5 years ago

可以正常工作了