{"id":493,"date":"2017-11-29T16:29:25","date_gmt":"2017-11-29T08:29:25","guid":{"rendered":"https:\/\/blog.jsjs.org\/?p=493"},"modified":"2017-11-29T16:29:25","modified_gmt":"2017-11-29T08:29:25","slug":"%e8%ae%b0%e4%b8%80%e6%ac%a1%e5%8e%8b%e6%b5%8b%e5%bc%95%e8%b5%b7%e7%9a%84nginx%e8%b4%9f%e8%bd%bd%e5%9d%87%e8%a1%a1%e6%80%a7%e8%83%bd%e8%b0%83%e4%bc%98","status":"publish","type":"post","link":"https:\/\/blog.jsjs.org\/?p=493","title":{"rendered":"\u8bb0\u4e00\u6b21\u538b\u6d4b\u5f15\u8d77\u7684nginx\u8d1f\u8f7d\u5747\u8861\u6027\u80fd\u8c03\u4f18"},"content":{"rendered":"<p>\u8fd9\u8fb9\u6709\u4e2a\u6027\u80fd\u8981\u6c42\u6781\u9ad8\u7684api\u8981\u4e0a\u7ebf\uff0c\u8fd9\u4e2a\u670d\u52a1\u7aef\u662fgolang http\u6a21\u5757\u5b9e\u73b0\u7684\u3002\u5728\u4e0a\u7ebf\u4e4b\u524d\u6211\u4eec\u7406\u6240\u5f53\u7136\u7684\u8981\u505a\u538b\u529b\u6d4b\u8bd5\u3002\u8d77\u521d\u662f \u201c\u5c0f\u767d\u540c\u5b66\u201d \u8d77\u5934\u8fdb\u884c\u538b\u529b\u6d4b\u8bd5\uff0c\u4f46\u5f53\u6211\u770b\u5230\u90a3\u538b\u529b\u6d4b\u8bd5\u7684\u7ed3\u679c\u65f6\uff0c\u6211\u4e5f\u662f\u9017\u4e50\u4e86\u3002 \u00a0 \u73b0\u8c61\u662f\uff0c\u76f4\u63a5\u8bbf\u95eeGolang http api\u662f\u6bcf\u79d2\u53ef\u4ee5\u52303.5W\u7684\u8bbf\u95ee, \u00a0\u4e3a\u4e86\u7406\u8bba\u627f\u53d7\u66f4\u5f3a\u7684QPS\uff0c\u591a\u5f00\u4e86\u51e0\u4e2ago http api\u8fdb\u7a0b\u7aef\u53e3\uff0c\u53c8\u5728\u8fd9\u524d\u9762\u52a0\u4e86\u5c42nginx\u8d1f\u8f7d\u5747\u8861\uff0c\u7ed3\u679c\u5f80nginx\u538b\u6d4b\u7684\u7ed3\u679c\u662f\u6bcf\u79d2\u624d\u53ef\u4ee5\u89e3\u51b31.5w\u7684\u8bbf\u95ee\u91cf\u3002 \u8fd9\u7ed3\u679c\u8ba9\u9ad8\u7ea7\u9ed1 \u201c\u5c0f\u767d\u201d \u628anginx\u53c8\u7ed9\u9119\u89c6\u4e86\u3002<\/p>\n<p>\u867d\u7136\u54e5\u5e73\u65f6\u5f00\u53d1\u4efb\u52a1\u5f88\u9971\u548c\uff0c\u53c8\u56e0\u4e3a\u5e26\u51e0\u4e2a\u65b0\u4eba\u7684\u539f\u56e0\uff0c\u6709\u70b9\u5fc3\u7d2f\u3002 \u4f46\u54e5\u8fd8\u662f\u62bd\u51fa\u5b9d\u8d35\u7684\u65f6\u95f4\u6765\u89e3\u51b3nginx\u5728\u538b\u529b\u6d4b\u8bd5\u4e0b\u6027\u80fd\u4e0a\u4e0d\u53bb\u7684\u95ee\u9898\u3002 \u54c8\u54c8\uff0c\u8fd9\u91cc\u80af\u5b9a\u6709\u4eba\u8981\u6253\u6211\u4e86\u3002 \u00a0\u8bf4\u5b9e\u8bdd\uff0c\u505a\u8fd0\u7ef4\u867d\u7136\u80fd\u65f6\u5e38\u78b0\u4e00\u4e9b\u8d1f\u8f7d\u5747\u8861\u8c03\u5ea6\u5668\uff0c\u4f46\u7531\u4e8e\u5f88\u591a\u65f6\u5019\u914d\u7f6e\u90fd\u6807\u51c6\u5316\u4e86\uff0c\u65b0\u5f00\u4e00\u4e2a\u4e1a\u52a1\u7ebf\uff0c\u628a\u914d\u7f6e\u4e00scp\uff0c\u7136\u540e\u9009\u62e9\u6027\u7684\u4fee\u6539\u57df\u540d\u53calocation\u5c31\u53ef\u4ee5\u4e86\uff0c\u8fd8\u771f\u662f\u6ca1\u9047\u5230\u8fc7\u8fd9\u6b21\u7684\u95ee\u9898\u3002<\/p>\n<p>\u6211\u4eec\u5728\u5bfb\u627e\u6027\u80fd\u74f6\u9888\u7684\u662f\u65f6\u5019\uff0c\u4f1a\u9891\u7e41\u7684\u4f7f\u7528\u540e\u9762\u7684\u5de5\u5177\u8fdb\u884c\u76d1\u63a7\uff0c\u63a8\u8350\u5927\u5bb6\u4f7f\u7528tmux\u6216\u8005screen\u5f00\u542f\u591a\u4e2a\u7ec8\u7aef\u76d1\u63a7\uff0c\u7528top\u53ef\u4ee5\u770b\u5230nginx\u53cago api\u7684cpu\u5360\u7528\u7387\uff0cload\u503c\uff0crun\u6570\uff0c\u5404\u4e2acpu\u6838\u5fc3\u7684\u767e\u5206\u6bd4\uff0c\u5904\u7406\u7f51\u7edc\u7684\u4e2d\u65ad\u3002\u7528dstat\u53ef\u4ee5\u770b\u5230\u6d41\u91cf\u53ca\u4e0a\u4e0b\u6587\u5207\u6362\u7684\u6d4b\u8bd5\u3002 \u00a0ss + netstat \u67e5\u770b\u8fde\u63a5\u6570\u3002<\/p>\n<p>\u9996\u5148\u662f\u538b\u529b\u6d4b\u8bd5\u7684\u65b9\u6cd5\u95ee\u9898<\/p>\n<p>\u4ee5\u524d\u505a\u8fd0\u7ef4\u7684\u65f6\u5019\uff0c\u6211\u4eec\u4e00\u822c\u4e0d\u4f1a\u7528\u7b80\u5355\u7684ab\u6765\u8fdb\u884c\u538b\u6d4b\uff0c\u8fd9\u6837\u4f1a\u9020\u6210\u538b\u529b\u6e90\u8fc7\u70ed\u7684\u60c5\u51b5\uff0c\u6b63\u5e38\u7684\u9488\u5bf9\u670d\u52a1\u7aef\u6d4b\u8bd5\u7684\u65b9\u6cd5\u662f\uff0c\u5206\u5e03\u5f0f\u538b\u529b\u6d4b\u8bd5\uff0c\u4e00\u4e2a\u4e3b\u673a\u538b\u6d4b\u7684\u7ed3\u679c\u5f88\u662f\u4e0d\u51c6\uff0c\u5f53\u7136\u524d\u63d0\u662f \u670d\u52a1\u7aef\u7684\u6027\u80fd\u591f\u9ad8\uff0c\u522b\u5c3c\u739b\u6574\u4e2apython django\u5c31\u7528\u5206\u5e03\u5f0f\u538b\u6d4b\uff0c\u968f\u4fbf\u627e\u4e2awebbench,ab , boom\u8fd9\u7c7b\u7684http\u538b\u6d4b\u5c31\u53ef\u4ee5\u4e86\u3002<\/p>\n<p>\u5173\u4e8e\u5ba2\u6237\u7aef\u538b\u6d4b\u8fc7\u70ed\u7684\u60c5\u51b5\u6709\u51e0\u4e2a\u5143\u7d20\uff0c\u6700\u4e3b\u8981\u7684\u5143\u7d20\u662f\u7aef\u53e3\u5360\u7528\u60c5\u51b5\u3002\u9996\u5148\u6211\u4eec\u9700\u8981\u660e\u786e\u51e0\u4e2a\u70b9,\u00a0\u4f5c\u4e3a\u670d\u52a1\u7aef\u53ea\u662f\u6d88\u8017fd\u800c\u5df2\uff0c\u4f46\u662f\u5ba2\u6237\u7aef\u662f\u9700\u8981\u5360\u7528\u7aef\u53e3\u6765\u53d1\u8d77\u8bf7\u6c42\u3002\u00a0\u5982\u679c\u4f60\u81ea\u5df1\u540c\u65f6\u4f5c\u4e3a\u670d\u52a1\u7aef\u548c\u5ba2\u6237\u7aef\uff0c\u4f1a\u88ab\u53d7\u9650\u4e8e65535-1024\u7684\u9650\u5236\uff0c1024\u5185\u4e00\u822c\u662f\u5e38\u89c4\u7684\u7cfb\u7edf\u4fdd\u7559\u7aef\u53e3\u3002 \u00a0 \u5982\u679c\u4f60\u6309\u716765535-1024\u8ba1\u7b97\u7684\u8bdd\uff0c\u4f60\u53ef\u4ee5\u5360\u752864511\u7aef\u53e3\u6570\uff0c\u4f46\u5982\u679c\u4f60\u662f\u81ea\u5df1\u538b\u529b\u6d4b\u8bd5nginx\uff0c\u7136\u540enginx\u53c8\u53cd\u5411\u4ee3\u7406\u51e0\u4e2agolang http api\u3002 \u00a0\u90a3\u4e48\u8fd9\u7aef\u53e3\u88ab\u4e25\u91cd\u7684\u7f29\u6c34\u4e86\u3002 \u00a0 \u5f53\u4f60\u538b\u6d4b\u7684\u6570\u76ee\u624d6w\u4ee5\u4e0a\uff0c\u5f88\u660e\u663e\u62a5\u9519\uff0c\u4e0d\u60f3\u62a5\u9519\uff0c\u90a3\u4e48\u53ea\u80fd\u8fdb\u884c\u6392\u961f\u963b\u585e\uff0c\u597d\u8ba9\u5ba2\u6237\u7aef\u5b8c\u6210\u8be5\u8bf7\u6c42\u3002<\/p>\n<p>\u53e6\u5916\u4e00\u70b9\u662fnginx \u914d\u7f6e\u95ee\u9898\u3002<\/p>\n<p>\u8fd9\u4e00\u70b9\u5f88\u91cd\u8981\uff0c\u4e5f\u662f\u6700\u57fa\u672c\u7684\u8981\u6c42\uff0c\u5982\u679cnginx worker\u8fde\u63a5\u6570\u8fc7\u5c11\u7684\u5316\uff0c\u4f60\u7684\u8bf7\u6c42\u8fde\u63a5\u5c31\u7b97\u6ca1\u6709\u88ab\u963b\u585e\u5230backlog\u961f\u5217\u5916\uff0cnginx worker\u4e5f\u4f1a\u56e0\u4e3a\u8fc7\u8f7d\u4fdd\u62a4\u4e0d\u4f1a\u5904\u7406\u65b0\u7684\u8bf7\u6c42\u3002nginx\u7684\u6700\u5927\u8fde\u63a5\u6570\u662fworker num *worker_connections, \u9ed8\u8ba4worker_connections\u662f1024, \u76f4\u63a5\u5e72\u523010w\u5c31\u53ef\u4ee5\u4e86\u3002<\/p>\n<p>\u5728\u6211\u4eec\u914d\u7f6e\u8c03\u6574\u4e4b\u540e\uff0c\u8bbf\u95ee\u7684\u901f\u5ea6\u6709\u660e\u663e\u7684\u63d0\u5347\uff0c\u4f46\u8fd8\u662f\u6ca1\u6709\u8fbe\u5230\u6211\u4eec\u7684\u9884\u671f\u3002 \u63a5\u7740\u901a\u8fc7lsof\u8ffd\u4e86\u4e0b\u8fdb\u7a0b\uff0c\u53d1\u73b0nginx \u8ddf \u540e\u7aef\u521b\u5efa\u4e86\u5927\u91cf\u7684\u8fde\u63a5\u3002 \u00a0\u8fd9\u5f88\u660e\u663e\u662f\u6ca1\u6709\u4f7f\u7528http1.1\u957f\u8fde\u63a5\u5bfc\u81f4\u7684\uff0c\u4f7f\u7528tcpdump\u6293\u5305\u5206\u6790\u4e86\u4e0b\uff0c\u679c\u7136\u662fhttp1.0\u77ed\u94fe\u63a5\uff0c\u867d\u7136\u6211\u4eec\u5728sysctl\u5185\u6838\u91cc\u505a\u4e86\u4e00\u4e9b\u7f51\u7edctcp\u56de\u6536\u7684\u4f18\u5316\uff0c\u4f46\u90a3\u4e5f\u8d76\u4e0d\u4e0a\u538b\u529b\u6d4b\u8bd5\u5e26\u6765\u7684\u9891\u7e41\u521b\u5efatcp\u7684\u6d88\u8017\u3002 \u00a0 \u679c\u7136\u5728upstream\u52a0\u4e86keepalive\u3002<\/p>\n<div id=\"crayon-5b5a6cc5df737940693363\" class=\"crayon-syntax crayon-theme-solarized-light crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-always expand\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\" style=\"height: 414px;\" width=\"831\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-5b5a6cc5df737940693363-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5b5a6cc5df737940693363-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5b5a6cc5df737940693363-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5b5a6cc5df737940693363-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5b5a6cc5df737940693363-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5b5a6cc5df737940693363-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5b5a6cc5df737940693363-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5b5a6cc5df737940693363-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5b5a6cc5df737940693363-9\">9<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5b5a6cc5df737940693363-10\">10<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5b5a6cc5df737940693363-11\">11<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5b5a6cc5df737940693363-12\">12<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5b5a6cc5df737940693363-13\">13<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5b5a6cc5df737940693363-14\">14<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5b5a6cc5df737940693363-15\">15<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-5b5a6cc5df737940693363-1\" class=\"crayon-line\"><span class=\"crayon-c\"># xiaorui.cc<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df737940693363-2\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-5b5a6cc5df737940693363-3\" class=\"crayon-line\"><span class=\"crayon-e\">COMMAND\u00a0\u00a0\u00a0\u00a0 <\/span><span class=\"crayon-e\">PID\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-k \">USER<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-e\">FD\u00a0\u00a0 <\/span><span class=\"crayon-k \">TYPE<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-k \">DEVICE<\/span> <span class=\"crayon-v\">SIZE<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-e\">OFF <\/span><span class=\"crayon-e\">NODE <\/span><span class=\"crayon-e\">NAME<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df737940693363-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-i\">python<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-cn\">538<\/span> <span class=\"crayon-i\">ruifengyun<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-cn\">9u<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">IPv4<\/span> <span class=\"crayon-cn\">595559383<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-cn\">0t0<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">TCP<\/span> <span class=\"crayon-cn\">58.215.141.194<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">46665<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-cn\">58.215.141.83<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">9001<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">ESTABLISHED<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df737940693363-5\" class=\"crayon-line\"><span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">_<\/span>dic4<span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-cn\">7476<\/span> <span class=\"crayon-i\">ruifengyun<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-cn\">5u<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">IPv6<\/span> <span class=\"crayon-cn\">660251515<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-cn\">0t0<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-v\">TCP<\/span> <span class=\"crayon-o\">*<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">9001<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">LISTEN<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df737940693363-6\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">_<\/span>dic4<span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-cn\">7476<\/span> <span class=\"crayon-i\">ruifengyun<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-cn\">10u<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">IPv6<\/span> <span class=\"crayon-cn\">660870187<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-cn\">0t0<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">TCP <\/span><span class=\"crayon-v\">localhost<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">9001<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">localhost<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">46679<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">ESTABLISHED<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df737940693363-7\" class=\"crayon-line\"><span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">_<\/span>dic4<span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-cn\">7476<\/span> <span class=\"crayon-i\">ruifengyun<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-cn\">13u<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">IPv6<\/span> <span class=\"crayon-cn\">660870138<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-cn\">0t0<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">TCP <\/span><span class=\"crayon-v\">localhost<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">9001<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">localhost<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">46608<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">ESTABLISHED<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df737940693363-8\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">_<\/span>dic4<span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-cn\">7476<\/span> <span class=\"crayon-i\">ruifengyun<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-cn\">14u<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">IPv6<\/span> <span class=\"crayon-cn\">660870137<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-cn\">0t0<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">TCP <\/span><span class=\"crayon-v\">localhost<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">9001<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">localhost<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">46607<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">ESTABLISHED<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df737940693363-9\" class=\"crayon-line\"><span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">_<\/span>dic4<span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-cn\">7476<\/span> <span class=\"crayon-i\">ruifengyun<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-cn\">22u<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">IPv6<\/span> <span class=\"crayon-cn\">660870153<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-cn\">0t0<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">TCP <\/span><span class=\"crayon-v\">localhost<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">9001<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">localhost<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">46632<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">ESTABLISHED<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df737940693363-10\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">_<\/span>dic4<span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-cn\">7476<\/span> <span class=\"crayon-i\">ruifengyun<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-cn\">23u<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">IPv6<\/span> <span class=\"crayon-cn\">660870143<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-cn\">0t0<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">TCP <\/span><span class=\"crayon-v\">localhost<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">9001<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">localhost<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">46618<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">ESTABLISHED<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df737940693363-11\" class=\"crayon-line\"><span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">_<\/span>dic4<span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-cn\">7476<\/span> <span class=\"crayon-i\">ruifengyun<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-cn\">27u<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">IPv6<\/span> <span class=\"crayon-cn\">660870166<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-cn\">0t0<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">TCP <\/span><span class=\"crayon-v\">localhost<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">9001<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">localhost<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">46654<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">ESTABLISHED<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df737940693363-12\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">_<\/span>dic4<span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-cn\">7476<\/span> <span class=\"crayon-i\">ruifengyun<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-cn\">73u<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">IPv6<\/span> <span class=\"crayon-cn\">660870191<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-cn\">0t0<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">TCP <\/span><span class=\"crayon-v\">localhost<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">9001<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">localhost<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">46685<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">ESTABLISHED<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df737940693363-13\" class=\"crayon-line\"><span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">_<\/span>dic4<span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-cn\">7476<\/span> <span class=\"crayon-i\">ruifengyun<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-cn\">85u<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">IPv6<\/span> <span class=\"crayon-cn\">660870154<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-cn\">0t0<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">TCP <\/span><span class=\"crayon-v\">localhost<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">9001<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">localhost<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">46633<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">ESTABLISHED<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df737940693363-14\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-v\">test<\/span><span class=\"crayon-sy\">_<\/span>dic4<span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-cn\">7476<\/span> <span class=\"crayon-i\">ruifengyun<\/span><span class=\"crayon-h\">\u00a0\u00a0 <\/span><span class=\"crayon-cn\">87u<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-i\">IPv6<\/span> <span class=\"crayon-cn\">660870147<\/span><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-cn\">0t0<\/span><span class=\"crayon-h\">\u00a0\u00a0<\/span><span class=\"crayon-e\">TCP <\/span><span class=\"crayon-v\">localhost<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">9001<\/span><span class=\"crayon-o\">-&gt;<\/span><span class=\"crayon-v\">localhost<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">46625<\/span> <span class=\"crayon-sy\">(<\/span><span class=\"crayon-v\">ESTABLISHED<\/span><span class=\"crayon-sy\">)<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df737940693363-15\" class=\"crayon-line\"><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>&nbsp;<\/p>\n<p>\u6458\u5f55\u5b98\u65b9\u6587\u6863\u7684\u8bf4\u660e\u5982\u4e0b\u3002\u8be5\u53c2\u6570\u5f00\u542f\u4e0e\u4e0a\u6e38\u670d\u52a1\u5668\u4e4b\u95f4\u7684\u8fde\u63a5\u6c60\uff0c\u5176\u6570\u503c\u4e3a\u6bcf\u4e2anginx worker\u53ef\u4ee5\u4fdd\u6301\u7684\u6700\u5927\u8fde\u63a5\u6570\uff0c\u9ed8\u8ba4\u4e0d\u8bbe\u7f6e\uff0c\u5373nginx\u4f5c\u4e3a\u5ba2\u6237\u7aef\u65f6keepalive\u672a\u751f\u6548\u3002<\/p>\n<p>Activates cache of connections to upstream servers<\/p>\n<p>The connections parameter sets the maximum number of idle keepalive connections to upstream servers that are retained in the cache per one worker process. When this number is exceeded, the least recently used connections are closed<\/p>\n<div id=\"crayon-5b5a6cc5df747169886533\" class=\"crayon-syntax crayon-theme-solarized-light crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-always expand\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\" style=\"height: 390px;\" width=\"722\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-5b5a6cc5df747169886533-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5b5a6cc5df747169886533-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5b5a6cc5df747169886533-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5b5a6cc5df747169886533-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5b5a6cc5df747169886533-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5b5a6cc5df747169886533-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5b5a6cc5df747169886533-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5b5a6cc5df747169886533-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5b5a6cc5df747169886533-9\">9<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5b5a6cc5df747169886533-10\">10<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5b5a6cc5df747169886533-11\">11<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5b5a6cc5df747169886533-12\">12<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5b5a6cc5df747169886533-13\">13<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5b5a6cc5df747169886533-14\">14<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5b5a6cc5df747169886533-15\">15<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5b5a6cc5df747169886533-16\">16<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-5b5a6cc5df747169886533-1\" class=\"crayon-line\"><span class=\"crayon-c\"># xiaorui.cc<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df747169886533-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-e\">upstream<\/span> <span class=\"crayon-e\">http_backend<\/span> <span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df747169886533-3\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-i\">server<\/span> <span class=\"crayon-cn\">127.0.0.1<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">8080<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df747169886533-4\" class=\"crayon-line crayon-striped-line\"><\/div>\n<div id=\"crayon-5b5a6cc5df747169886533-5\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-i\">keepalive<\/span> <span class=\"crayon-cn\">256<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df747169886533-6\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df747169886533-7\" class=\"crayon-line\"><span class=\"crayon-e\">server<\/span> <span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df747169886533-8\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df747169886533-9\" class=\"crayon-line\"><\/div>\n<div id=\"crayon-5b5a6cc5df747169886533-10\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">location<\/span> <span class=\"crayon-o\">\/<\/span><span class=\"crayon-e\">http<\/span><span class=\"crayon-o\">\/<\/span> <span class=\"crayon-sy\">{<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df747169886533-11\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">proxy_pass <\/span><span class=\"crayon-v\">http<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-v\">http_backend<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df747169886533-12\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-v\">proxy_http<\/span><span class=\"crayon-sy\">_<\/span>version <span class=\"crayon-cn\">1.1<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df747169886533-13\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-e\">proxy_set_header <\/span><span class=\"crayon-i\">Connection<\/span> <span class=\"crayon-s\">&#8220;&#8221;<\/span><span class=\"crayon-sy\">;<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df747169886533-14\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><span class=\"crayon-sy\">.<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df747169886533-15\" class=\"crayon-line\"><span class=\"crayon-h\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"crayon-sy\">}<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df747169886533-16\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-sy\">}<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>&nbsp;<\/p>\n<p>\u7ee7\u7eed\u8fdb\u884c\u538b\u529b\u6d4b\u8bd5\uff0c\u8fd4\u73b0\u8fd9\u8bbf\u95ee\u91cf\u8fd8\u662f\u90a3\u6837\uff0c\u6ca1\u6709\u4ec0\u4e48\u63d0\u5347\uff0c\u901a\u8fc7\u6392\u9664\u95ee\u9898\u786e\u8ba4\u53c8\u662f\u8fde\u63a5\u6570\u5927\u5f15\u8d77\u7684\uff0c\u8fd9\u957f\u8fde\u63a5\u4e0d\u751f\u6548\u5440\u3002 \u4ee5\u524d\u6211\u5728\u7ebf\u4e0a\u4e5f\u662f\u8fd9\u4e48\u8c03\u914d\u7684\uff0c\u5e94\u8be5\u6ca1\u95ee\u9898\u3002 \u00a0\u6700\u540e\u901a\u8fc7nginx error log\u627e\u5230\u4e86\u539f\u56e0\u3002 \u00a0\u8fd9Nginx\u7248\u672c\u5c45\u7136\u4e0d\u652f\u6301keepalive \u957f\u8fde\u63a5\uff0c\u6ca1\u62db\uff0c\u6362\u4e2a\u7248\u672c\u518d\u6b21\u6d4b\u8bd5\u3002<\/p>\n<div id=\"crayon-5b5a6cc5df752565715037\" class=\"crayon-syntax crayon-theme-solarized-light crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-always expand\">\n<div class=\"crayon-plain-wrap\"><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\" style=\"height: 364px;\" width=\"1161\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-5b5a6cc5df752565715037-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5b5a6cc5df752565715037-2\">2<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5b5a6cc5df752565715037-3\">3<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5b5a6cc5df752565715037-4\">4<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5b5a6cc5df752565715037-5\">5<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5b5a6cc5df752565715037-6\">6<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5b5a6cc5df752565715037-7\">7<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5b5a6cc5df752565715037-8\">8<\/div>\n<div class=\"crayon-num\" data-line=\"crayon-5b5a6cc5df752565715037-9\">9<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-5b5a6cc5df752565715037-10\">10<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-5b5a6cc5df752565715037-1\" class=\"crayon-line\"><span class=\"crayon-cn\">2016<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">06<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">24<\/span> <span class=\"crayon-cn\">16<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">34<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">12<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">error<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-cn\">15419<\/span><span class=\"crayon-c\">#0: *9421660 connect() failed (111: Connection refused) while connecting to upstream, client: 10.1.1.58, server: , request: &#8220;GET \/ HTTP\/1.0&#8221;, upstream: &#8220;http:\/\/127.0.0.1:9001\/&#8221;, host: &#8220;10.1.1.63&#8221;<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df752565715037-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">2016<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">06<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">24<\/span> <span class=\"crayon-cn\">16<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">34<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">12<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">error<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-cn\">15418<\/span><span class=\"crayon-c\">#0: *9423639 connect() failed (111: Connection refused) while connecting to upstream, client: 10.1.1.58, server: , request: &#8220;GET \/ HTTP\/1.0&#8221;, upstream: &#8220;http:\/\/127.0.0.1:9004\/&#8221;, host: &#8220;10.1.1.63&#8221;<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df752565715037-3\" class=\"crayon-line\"><span class=\"crayon-cn\">2016<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">06<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">24<\/span> <span class=\"crayon-cn\">16<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">34<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">12<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">error<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-cn\">15418<\/span><span class=\"crayon-c\">#0: *9423639 no live upstreams while connecting to upstream, client: 10.1.1.58, server: , request: &#8220;GET \/ HTTP\/1.0&#8221;, upstream: &#8220;http:\/\/test_servers\/&#8221;, host: &#8220;10.1.1.63&#8221;<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df752565715037-4\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">2016<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">06<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">24<\/span> <span class=\"crayon-cn\">16<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">34<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">12<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">error<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-cn\">15418<\/span><span class=\"crayon-c\">#0: *9393899 connect() failed (111: Connection refused) while connecting to upstream, client: 10.1.1.58, server: , request: &#8220;GET \/ HTTP\/1.0&#8221;, upstream: &#8220;http:\/\/127.0.0.1:9004\/&#8221;, host: &#8220;10.1.1.63&#8221;<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df752565715037-5\" class=\"crayon-line\"><span class=\"crayon-cn\">2016<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">06<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">24<\/span> <span class=\"crayon-cn\">16<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">58<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">13<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">notice<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-cn\">26449<\/span><span class=\"crayon-c\">#26449: signal process started<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df752565715037-6\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">2016<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">06<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">24<\/span> <span class=\"crayon-cn\">16<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">58<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">13<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">emerg<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-cn\">27280<\/span><span class=\"crayon-c\">#0: unknown directive &#8220;keepalive&#8221; in \/etc\/nginx\/conf.d\/test_multi.conf:7<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df752565715037-7\" class=\"crayon-line\"><span class=\"crayon-cn\">2016<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">06<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">24<\/span> <span class=\"crayon-cn\">17<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">02<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">18<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">notice<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-cn\">3141<\/span><span class=\"crayon-c\">#3141: signal process started<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df752565715037-8\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">2016<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">06<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">24<\/span> <span class=\"crayon-cn\">17<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">02<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">18<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">emerg<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-cn\">27280<\/span><span class=\"crayon-c\">#0: unknown directive &#8220;keepalive&#8221; in \/etc\/nginx\/conf.d\/test_multi.conf:7<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df752565715037-9\" class=\"crayon-line\"><span class=\"crayon-cn\">2016<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">06<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">24<\/span> <span class=\"crayon-cn\">17<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">02<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">44<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">notice<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-cn\">4079<\/span><span class=\"crayon-c\">#4079: signal process started<\/span><\/div>\n<div id=\"crayon-5b5a6cc5df752565715037-10\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-cn\">2016<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">06<\/span><span class=\"crayon-o\">\/<\/span><span class=\"crayon-cn\">24<\/span> <span class=\"crayon-cn\">17<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">02<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-cn\">44<\/span> <span class=\"crayon-sy\">[<\/span><span class=\"crayon-v\">emerg<\/span><span class=\"crayon-sy\">]<\/span> <span class=\"crayon-cn\">27280<\/span><span class=\"crayon-c\">#0: unknown directive &#8220;keepalive&#8221; in \/etc\/nginx\/conf.d\/test_multi.conf:7<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>&nbsp;<\/p>\n<p>\u7b80\u5355\u63cf\u8ff0\u4e0bnginx upstream keepalive\u662f\u4e2a\u600e\u4e48\u4e00\u56de\u4e8b?<\/p>\n<p>\u9ed8\u8ba4\u60c5\u51b5\u4e0b Nginx \u8bbf\u95ee\u540e\u7aef\u90fd\u662f\u7528\u7684\u77ed\u8fde\u63a5(HTTP1.0)\uff0c\u4e00\u4e2a\u8bf7\u6c42\u6765\u4e86\uff0cNginx \u65b0\u5f00\u4e00\u4e2a\u7aef\u53e3\u548c\u540e\u7aef\u5efa\u7acb\u8fde\u63a5\uff0c\u8bf7\u6c42\u7ed3\u675f\u8fde\u63a5\u56de\u6536\u3002<\/p>\n<p>\u5982\u8fc7\u914d\u7f6e\u4e86http 1.1\u957f\u8fde\u63a5\uff0c\u90a3\u4e48Nginx\u4f1a\u4ee5\u957f\u8fde\u63a5\u4fdd\u6301\u540e\u7aef\u7684\u8fde\u63a5\uff0c\u5982\u679c\u5e76\u53d1\u8bf7\u6c42\u8d85\u8fc7\u4e86 keepalive \u6307\u5b9a\u7684\u6700\u5927\u8fde\u63a5\u6570\uff0cNginx \u4f1a\u542f\u52a8\u65b0\u7684\u8fde\u63a5 \u6765\u8f6c\u53d1\u8bf7\u6c42\uff0c\u65b0\u8fde\u63a5\u5728\u8bf7\u6c42\u5b8c\u6bd5\u540e\u5173\u95ed\uff0c\u800c\u4e14\u65b0\u5efa\u7acb\u7684\u8fde\u63a5\u662f\u957f\u8fde\u63a5\u3002<\/p>\n<p>\u4e0b\u56fe\u662fnginx upstream keepalive\u957f\u8fde\u63a5\u7684\u5b9e\u73b0\u539f\u7406.<\/p>\n<p>\u9996\u5148\u6bcf\u4e2a\u8fdb\u7a0b\u9700\u8981\u4e00\u4e2aconnection pool\uff0c\u91cc\u9762\u90fd\u662f\u957f\u8fde\u63a5\uff0c\u591a\u8fdb\u7a0b\u4e4b\u95f4\u662f\u4e0d\u9700\u8981\u5171\u4eab\u8fd9\u4e2a\u8fde\u63a5\u6c60\u7684\u3002 \u4e00\u65e6\u4e0e\u540e\u7aef\u670d\u52a1\u5668\u5efa\u7acb\u8fde\u63a5\uff0c\u5219\u5728\u5f53\u524d\u8bf7\u6c42\u8fde\u63a5\u7ed3\u675f\u4e4b\u540e\u4e0d\u4f1a\u7acb\u5373\u5173\u95ed\u8fde\u63a5\uff0c\u800c\u662f\u628a\u7528\u5b8c\u7684\u8fde\u63a5\u4fdd\u5b58\u5728\u4e00\u4e2akeepalive connection pool\u91cc\u9762\uff0c\u4ee5\u540e\u6bcf\u6b21\u9700\u8981\u5efa\u7acb\u5411\u540e\u8fde\u63a5\u7684\u65f6\u5019\uff0c\u53ea\u9700\u8981\u4ece\u8fd9\u4e2a\u8fde\u63a5\u6c60\u91cc\u9762\u627e\uff0c\u5982\u679c\u627e\u5230\u5408\u9002\u7684\u8fde\u63a5\u7684\u8bdd\uff0c\u5c31\u53ef\u4ee5\u76f4\u63a5\u6765\u7528\u8fd9\u4e2a\u8fde\u63a5\uff0c\u4e0d\u9700\u8981\u91cd\u65b0\u521b\u5efasocket\u6216\u8005\u53d1\u8d77connect()\u3002\u8fd9\u6837\u65e2\u7701\u4e0b\u5efa\u7acb\u8fde\u63a5\u65f6\u5728\u63e1\u624b\u7684\u65f6\u95f4\u6d88\u8017\uff0c\u53c8\u53ef\u4ee5\u907f\u514dTCP\u8fde\u63a5\u7684slow start\u3002\u5982\u679c\u5728keepalive\u8fde\u63a5\u6c60\u627e\u4e0d\u5230\u5408\u9002\u7684\u8fde\u63a5\uff0c\u90a3\u5c31\u6309\u7167\u539f\u6765\u7684\u6b65\u9aa4\u91cd\u65b0\u5efa\u7acb\u8fde\u63a5\u3002 \u6211\u6ca1\u6709\u770b\u8fc7nginx\u5728\u8fde\u63a5\u6c60\u4e2d\u67e5\u627e\u53ef\u7528\u8fde\u63a5\u7684\u4ee3\u7801\uff0c\u4f46\u662f\u6211\u81ea\u5df1\u5199\u8fc7redis\uff0cmysqldb\u7684\u8fde\u63a5\u6c60\u4ee3\u7801\uff0c\u903b\u8f91\u5e94\u8be5\u90fd\u662f\u4e00\u6837\u7684\u3002\u8c01\u7528\u8c01pop\uff0c\u7528\u5b8c\u4e86\u518dpush\u8fdb\u53bb\uff0c\u8fd9\u6837\u65f6\u95f4\u624dO(1)\u3002<\/p>\n<p>\u5982\u679c\u4f60\u7684\u8fde\u63a5\u6c60\u7684\u6570\u63a7\u5236\u5728128\uff0c\u4f46\u56e0\u4e3a\u4f60\u8981\u5e94\u5bf9\u66f4\u591a\u7684\u5e76\u53d1\u8bf7\u6c42\uff0c\u6240\u4ee5\u4e34\u65f6\u53c8\u52a0\u4e86\u5f88\u591a\u7684\u8fde\u63a5\uff0c\u4f46\u8fd9\u4e34\u65f6\u7684\u8fde\u63a5\u662f\u77ed\u8fde\u63a5\u548c\u957f\u8fde\u63a5\u8981\u770b\u4f60\u7684nginx\u7248\u672c\uff0c\u6211\u8fd91.8\u662f\u957f\u8fde\u63a5\uff0c\u90a3\u4ed6\u5982\u4f55\u88ab\u6536\u56de\uff0c\u4e24\u5730\u4fdd\u8bc1\uff0c\u4e00\u70b9\u662f\u4ed6\u4f1a\u4e3b\u52a8\u53bb\u91ca\u653e\uff0c\u53e6\u4e00\u70b9\u662fkeepalive timeout\u7684\u65f6\u95f4\u3002<\/p>\n<div><\/div>\n<p><img decoding=\"async\" src=\"http:\/\/xiaorui.cc\/wp-content\/uploads\/2016\/06\/20160626000732_29848.jpg\" alt=\"\" \/><\/p>\n<p>Golang\u7684http\u6a21\u5757\u8c8c\u4f3c\u5bf9http spdy\u652f\u6301\u4e0d\u600e\u4e48\u597d\uff0c \u8981\u4e0d\u7136\u53ef\u4ee5\u76f4\u63a5\u7528\u6dd8\u5b9d\u7684tengine upstream spdy\u7684\u65b9\u5f0f\u8fde\u63a5\u540e\u7aefServer\u3002 \u4ed6\u7684\u901f\u5ea6\u8981\u6bd4keepalive\u8981\u597d\u7684\u591a\uff0c\u6bd5\u7adf\u7701\u53bb\u4e86\u7b49\u5f85\u4e0a\u6b21\u8fd4\u56de\u7684\u7ed3\u679c\u7684\u8fc7\u7a0b\u3002<\/p>\n<p>&nbsp;<\/p>\n<p>\u539f\u6587\u5730\u5740\uff1a<\/p>\n<p><a href=\"http:\/\/xiaorui.cc\/2016\/06\/26\/%e8%ae%b0%e4%b8%80%e6%ac%a1%e5%8e%8b%e6%b5%8b%e5%bc%95%e8%b5%b7%e7%9a%84nginx%e8%b4%9f%e8%bd%bd%e5%9d%87%e8%a1%a1%e6%80%a7%e8%83%bd%e8%b0%83%e4%bc%98\/\">http:\/\/xiaorui.cc\/2016\/06\/26\/%e8%ae%b0%e4%b8%80%e6%ac%a1%e5%8e%8b%e6%b5%8b%e5%bc%95%e8%b5%b7%e7%9a%84nginx%e8%b4%9f%e8%bd%bd%e5%9d%87%e8%a1%a1%e6%80%a7%e8%83%bd%e8%b0%83%e4%bc%98\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u8fd9\u8fb9\u6709\u4e2a\u6027\u80fd\u8981\u6c42\u6781\u9ad8\u7684api\u8981\u4e0a\u7ebf\uff0c\u8fd9\u4e2a\u670d\u52a1\u7aef\u662fgolang http\u6a21\u5757\u5b9e\u73b0\u7684\u3002\u5728\u4e0a\u7ebf\u4e4b\u524d\u6211\u4eec\u7406\u6240\u5f53\u7136\u7684\u8981\u505a\u538b\u529b\u6d4b\u8bd5\u3002\u8d77\u521d\u662f \u201c\u5c0f\u767d\u540c\u5b66\u201d \u8d77\u5934\u8fdb\u884c\u538b\u529b\u6d4b\u8bd5\uff0c\u4f46\u5f53\u6211\u770b\u5230\u90a3\u538b\u529b\u6d4b\u8bd5\u7684\u7ed3\u679c\u65f6\uff0c\u6211\u4e5f\u662f\u9017\u4e50\u4e86\u3002 \u00a0 \u73b0\u8c61\u662f\uff0c\u76f4\u63a5\u8bbf\u95eeGolang http api\u662f\u6bcf\u79d2\u53ef\u4ee5\u52303.5W\u7684\u8bbf\u95ee, \u00a0\u4e3a\u4e86\u7406\u8bba\u627f\u53d7\u66f4\u5f3a\u7684QPS\uff0c\u591a\u5f00\u4e86\u51e0\u4e2ago http api\u8fdb\u7a0b\u7aef\u53e3\uff0c\u53c8\u5728\u8fd9\u524d\u9762\u52a0\u4e86\u5c42nginx\u8d1f\u8f7d\u5747\u8861\uff0c\u7ed3\u679c\u5f80nginx\u538b\u6d4b\u7684\u7ed3\u679c\u662f\u6bcf\u79d2\u624d\u53ef\u4ee5\u89e3\u51b31.5w\u7684\u8bbf\u95ee\u91cf\u3002 \u8fd9\u7ed3\u679c\u8ba9\u9ad8\u7ea7\u9ed1 \u201c\u5c0f\u767d\u201d \u628anginx\u53c8\u7ed9\u9119\u89c6\u4e86\u3002 \u867d\u7136\u54e5\u5e73\u65f6\u5f00\u53d1\u4efb\u52a1\u5f88\u9971\u548c\uff0c\u53c8\u56e0\u4e3a\u5e26\u51e0\u4e2a\u65b0\u4eba\u7684\u539f\u56e0\uff0c\u6709\u70b9\u5fc3\u7d2f\u3002 \u4f46\u54e5\u8fd8\u662f\u62bd\u51fa\u5b9d\u8d35\u7684\u65f6\u95f4\u6765\u89e3\u51b3nginx\u5728\u538b\u529b\u6d4b\u8bd5\u4e0b\u6027\u80fd\u4e0a\u4e0d\u53bb\u7684\u95ee\u9898\u3002 \u54c8\u54c8\uff0c\u8fd9\u91cc\u80af\u5b9a\u6709\u4eba\u8981\u6253\u6211\u4e86\u3002 \u00a0\u8bf4\u5b9e\u8bdd\uff0c\u505a\u8fd0\u7ef4\u867d\u7136\u80fd\u65f6\u5e38\u78b0\u4e00\u4e9b\u8d1f\u8f7d\u5747\u8861\u8c03\u5ea6\u5668\uff0c\u4f46\u7531\u4e8e\u5f88\u591a\u65f6\u5019\u914d\u7f6e\u90fd\u6807\u51c6\u5316\u4e86\uff0c\u65b0\u5f00\u4e00\u4e2a\u4e1a\u52a1\u7ebf\uff0c\u628a\u914d\u7f6e\u4e00scp\uff0c\u7136\u540e\u9009\u62e9\u6027\u7684\u4fee\u6539\u57df\u540d\u53calocation\u5c31\u53ef\u4ee5\u4e86\uff0c\u8fd8\u771f\u662f\u6ca1\u9047\u5230\u8fc7\u8fd9\u6b21\u7684\u95ee\u9898\u3002 \u6211\u4eec\u5728\u5bfb\u627e\u6027\u80fd\u74f6\u9888\u7684\u662f\u65f6\u5019\uff0c\u4f1a\u9891\u7e41\u7684\u4f7f\u7528\u540e\u9762\u7684\u5de5\u5177\u8fdb\u884c\u76d1\u63a7\uff0c\u63a8\u8350\u5927\u5bb6\u4f7f\u7528tmux\u6216\u8005screen\u5f00\u542f\u591a\u4e2a\u7ec8\u7aef\u76d1\u63a7\uff0c\u7528top\u53ef\u4ee5\u770b\u5230nginx\u53cago api\u7684cpu\u5360\u7528\u7387\uff0cload\u503c\uff0crun\u6570\uff0c\u5404\u4e2acpu\u6838\u5fc3\u7684\u767e\u5206\u6bd4\uff0c\u5904\u7406\u7f51\u7edc\u7684\u4e2d\u65ad\u3002\u7528dstat\u53ef\u4ee5\u770b\u5230\u6d41\u91cf\u53ca\u4e0a\u4e0b\u6587\u5207\u6362\u7684\u6d4b\u8bd5\u3002 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-493","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/posts\/493","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=493"}],"version-history":[{"count":0,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=\/wp\/v2\/posts\/493\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=493"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=493"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jsjs.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=493"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}