首页
下载
文档
问答社区
视频
捐赠
源代码
AI 助理
赞助商
CRMEB
Apipost
腾讯云
微擎
禅道
51Talk
商业产品
Swoole AI 智能文档翻译器
Swoole-Compiler PHP 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
SSL下可能出现fd异常的情况
### 问题描述 tcp+ssl 服务器,持续运行4-7天后(800-1400万左右次连接),开始出现fd的数据异常,用table保存fd为key,在foreach遍历之后,得到的fd可能出现为字符串或者0的情况。同时如果出现此情况,会发生kill -15 只能关闭worker进程,无法关闭主进程,主进程需要重新kill -9。正常情况下 kill-15即可以全部正常关闭。 ### Swoole版本,PHP版本,以及操作系统版本信息 swoole v4.6.6 php 7.3 centos7.5 ### 相关代码 ```php //start $serv->set(array( 'worker_num' => $workerNum, 'daemonize' => true, 'backlog' => 256, 'heartbeat_check_interval' => 120, 'heartbeat_idle_time' => 600, 'open_eof_check' => true, 'package_eof' => "\n", 'max_request' => 200000, 'ssl_cert_file' => ROOT_PATH . '/ssl/root.crt', 'ssl_key_file' => ROOT_PATH . '/ssl/root.key', 'open_tcp_nodelay' => true )); //session $serv->session->set($fd, array()); foreach ($serv->session as $fd => $v){ $serv->send($fd,xxxx); } Swoole\Server::send(): invalid fd[0] in xxxxxx or Swoole\Server::close() expects parameter 1 to be interger, string given in xxxxxx ``` ### 你期待的结果是什么?实际看到的错误信息又是什么? 随着时间的推移,出现错误的频率越来越高。最终只有重启解决。
发布于3年前 · 15 次浏览 · 来自
提问
jungle
### 问题描述 tcp+ssl 服务器,持续运行4-7天后(800-1400万左右次连接),开始出现fd的数据异常,用table保存fd为key,在foreach遍历之后,得到的fd可能出现为字符串或者0的情况。同时如果出现此情况,会发生kill -15 只能关闭worker进程,无法关闭主进程,主进程需要重新kill -9。正常情况下 kill-15即可以全部正常关闭。 ### Swoole版本,PHP版本,以及操作系统版本信息 swoole v4.6.6 php 7.3 centos7.5 ### 相关代码 ```php //start $serv->set(array( 'worker_num' => $workerNum, 'daemonize' => true, 'backlog' => 256, 'heartbeat_check_interval' => 120, 'heartbeat_idle_time' => 600, 'open_eof_check' => true, 'package_eof' => "\n", 'max_request' => 200000, 'ssl_cert_file' => ROOT_PATH . '/ssl/root.crt', 'ssl_key_file' => ROOT_PATH . '/ssl/root.key', 'open_tcp_nodelay' => true )); //session $serv->session->set($fd, array()); foreach ($serv->session as $fd => $v){ $serv->send($fd,xxxx); } Swoole\Server::send(): invalid fd[0] in xxxxxx or Swoole\Server::close() expects parameter 1 to be interger, string given in xxxxxx ``` ### 你期待的结果是什么?实际看到的错误信息又是什么? 随着时间的推移,出现错误的频率越来越高。最终只有重启解决。
赞
0
分享
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
评论
2021-06-28
Rango
新的 `4.6.7` 中已修复此问题,`4.6.6` 或以下版本中可以,判断 `fd` 为 `0` 时 `continue` 即可。
赞
0
回复
2021-06-30
jungle
回复
Rango
抱歉,之前版本的描述有误,目前使用的就是4.6.7,依然还是有这个问题,能告知如何修复吗?非常感谢! Swoole => enabled Author => Swoole Team <team@swoole.com> Version => 4.6.7 Built => May 19 2021 16:43:24 coroutine => enabled with boost asm context epoll => enabled eventfd => enabled pthread_barrier => enabled futex => enabled async_redis => enabled Directive => Local Value => Master Value swoole.display_errors => On => On swoole.enable_coroutine => On => On swoole.enable_library => On => On swoole.enable_preemptive_scheduler => Off => Off swoole.unixsock_buffer_size => 8388608 => 8388608 swoole.use_shortname => On => On
赞
0
回复
2021-07-01
Rango
[@jungle ](/u/23313)请添加我的微信 19921030512 详细沟通
赞
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一直是同一个。没用使用到多进程啊。