首页
下载
文档
问答社区
视频
捐赠
源代码
AI 助理
赞助商
CRMEB
Apipost
腾讯云
微擎
禅道
51Talk
商业产品
Swoole AI 智能文档翻译器
Swoole-Compiler PHP 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
swoole server 连接超时问题
我们最近使用swoole重构了一个php服务,大致情况如下: - 使用swoole server形式,前端nginx以proxy_pass方式转发请求到swoole server。 - 同步方式,服务从redis读取数据,格式化后返回给客户端,不存在阻塞操作。 - 压测时发现一个很奇怪的问题,绕过nginx直接压测swoole server, 使用ab压测,并发100,qps可以达到2万,并且没有失败。 使用loadrunner等其他工具压测时,qps到2k左右就开始有失败的请求,并且反映出来的qps在几百到几千之间周期性的变化。 - 系统上线后,在qps达到1k时,nginx日志出来大量异常, - 报502,"upstream timed out (110: Connection timed out) while connecting to upstream" 连结swoole server超时。 - 报499,据分析是因为服务端超时导致连结关闭。 起初是怀疑worker数量不够,后来发现worker数量在24 ~ 100之间调整,并没有什么效果。我们线上服务器配置是24核/64G内存,系统负载很低。 系统ip/tcp/ulimit 方面的优化都已经做了,实在是想不通问题在哪儿,请各位高手帮忙分析一下。 代码示意: Class AppServer { function run() { swoole_set_process_name($this->serv_conf['name']); $this->serv = new swoole_http_server($this->serv_conf['host'], $this->serv_conf['port']); $this->serv->set(array( 'chroot' => CHROOT, 'daemonize' => 1, 'log_file' => LOGPATH.'hq_server.log', 'backlog' => 512, 'open_tcp_nodelay' => 1, 'max_conn' => 100000, 'worker_num' => 24, )); $this->serv->on('WorkerStart', array($this, 'onWorkerStart')); $this->serv->on('WorkerStop', array($this, 'onWorkerStop')); $this->serv->on('request', array($this, 'onRequest')); $this->serv->start(); } function onWorkerStart { } function onWorkerStop { } function onRequest() { } }
发布于8年前 · 13 次浏览 · 来自
提问
漫
漫漫
我们最近使用swoole重构了一个php服务,大致情况如下: - 使用swoole server形式,前端nginx以proxy_pass方式转发请求到swoole server。 - 同步方式,服务从redis读取数据,格式化后返回给客户端,不存在阻塞操作。 - 压测时发现一个很奇怪的问题,绕过nginx直接压测swoole server, 使用ab压测,并发100,qps可以达到2万,并且没有失败。 使用loadrunner等其他工具压测时,qps到2k左右就开始有失败的请求,并且反映出来的qps在几百到几千之间周期性的变化。 - 系统上线后,在qps达到1k时,nginx日志出来大量异常, - 报502,"upstream timed out (110: Connection timed out) while connecting to upstream" 连结swoole server超时。 - 报499,据分析是因为服务端超时导致连结关闭。 起初是怀疑worker数量不够,后来发现worker数量在24 ~ 100之间调整,并没有什么效果。我们线上服务器配置是24核/64G内存,系统负载很低。 系统ip/tcp/ulimit 方面的优化都已经做了,实在是想不通问题在哪儿,请各位高手帮忙分析一下。 代码示意: Class AppServer { function run() { swoole_set_process_name($this->serv_conf['name']); $this->serv = new swoole_http_server($this->serv_conf['host'], $this->serv_conf['port']); $this->serv->set(array( 'chroot' => CHROOT, 'daemonize' => 1, 'log_file' => LOGPATH.'hq_server.log', 'backlog' => 512, 'open_tcp_nodelay' => 1, 'max_conn' => 100000, 'worker_num' => 24, )); $this->serv->on('WorkerStart', array($this, 'onWorkerStart')); $this->serv->on('WorkerStop', array($this, 'onWorkerStop')); $this->serv->on('request', array($this, 'onRequest')); $this->serv->start(); } function onWorkerStart { } function onWorkerStop { } function onRequest() { } }
赞
0
分享
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
评论
2017-03-15
默文
- nginx和swoole之间是否启用了KeepAlive长连接?
赞
0
回复
微信公众号
热门内容
暂无回复的问答
- CodeGalaxy K3s 轻量集群节点之间如何实现负载均衡
- 关于openssl CURL WARNING swSSL_connect: SSL_connect(fd=69) failed. Error: error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small[1|394]
- 多个模型如何进行事务异常回退?
- websocket开启wss报错
- 协程tcp服务器如何使用多进程?recv()方法接收信息,打印出来的pid一直是同一个。没用使用到多进程啊。