{"action":"reopened","issue":{"url":"https://api.github.com/repos/alibaba/tengine/issues/675","labels_url":"https://api.github.com/repos/alibaba/tengine/issues/675/labels{/name}","comments_url":"https://api.github.com/repos/alibaba/tengine/issues/675/comments","events_url":"https://api.github.com/repos/alibaba/tengine/issues/675/events","html_url":"https://github.com/alibaba/tengine/issues/675","id":121423982,"number":675,"title":"Tengine 2.1.1 健康检查进程间不协调工作","user":{"login":"bjrara","id":2612976,"avatar_url":"https://avatars.githubusercontent.com/u/2612976?v=3","gravatar_id":"","url":"https://api.github.com/users/bjrara","html_url":"https://github.com/bjrara","followers_url":"https://api.github.com/users/bjrara/followers","following_url":"https://api.github.com/users/bjrara/following{/other_user}","gists_url":"https://api.github.com/users/bjrara/gists{/gist_id}","starred_url":"https://api.github.com/users/bjrara/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bjrara/subscriptions","organizations_url":"https://api.github.com/users/bjrara/orgs","repos_url":"https://api.github.com/users/bjrara/repos","events_url":"https://api.github.com/users/bjrara/events{/privacy}","received_events_url":"https://api.github.com/users/bjrara/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":11,"created_at":"2015-12-10T07:47:28Z","updated_at":"2015-12-15T09:02:03Z","closed_at":null,"body":"Hi\r\n最近发现当 tengine 添加了大量 upstream 并配置 upstream check 的情况下，会出现健康检查进程间不同步的现象。\r\n使用版本：2.1.1\r\n现象描述：\r\nupstream check 配置\r\n```javascript\r\ncheck interval=5000 rise=1 fall=1 timeout=2000 type=http default_down=false;\r\ncheck_keepalive_requests 100;\r\ncheck_http_send \"GET /someuri HTTP/1.0\\r\\nConnection:keep-alive\\r\\n\\r\\n\";\r\ncheck_http_expect_alive http_2xx http_3xx;\r\n```\r\n为了方便追踪进程对健康页面的调用情况，我把 checkuri 设为了一个不可访问的地址，\r\n然后发现 error.log 打印出以下内容（为了便于说明问题，我抽取了三个进程号）：\r\n```\r\n2015/11/19 18:32:16 [error] 16768#0: check protocol http error with peer: 10.15.133.33:80 \r\n2015/11/19 18:32:21 [error] 16770#0: check protocol http error with peer: 10.15.133.33:80 \r\n2015/11/19 18:32:23 [error] 16773#0: check protocol http error with peer: 10.15.133.33:80 \r\n2015/11/19 18:32:23 [error] 16768#0: check protocol http error with peer: 10.15.133.33:80 \r\n2015/11/19 18:32:26 [error] 16770#0: check protocol http error with peer: 10.15.133.33:80 \r\n2015/11/19 18:32:23 [error] 16773#0: check protocol http error with peer: 10.15.133.33:80 \r\n```\r\n按照我的理解，\r\nupstream check 的预期行为应该是进程间协调工作对 upstream server 进行健康检查，由于 timeout = 2000，所以这里看到的信息应该是每 7000 ms 出现一个 check protocol http error。\r\n按照现实情况来看，每一个进程单独进行了 upstream check，每隔 7000ms 进行一次健康检查。\r\n\r\n这样的话，单个后台服务器的健康检查页面增加了 process_num 的倍。\r\n我们目前还没有找到触发问题的最小测试集，但这个现象出现得还是比较频繁的。\r\n\r\n请问 tengine 在压测中有没有出现过类似的问题？或者能否告知可能导致这个现象的原因以便我们排错。"}}