Swoole ERROR swFactoryProcess_finish (ERROR 1004)
发表于|更新于|编程语言
经常发现这个错误 虽然不影响线上服务, 但还是找下问题
[2019-01-08 19:12:31 *1955.15] NOTICE swFactoryProcess_finish (ERROR 1004): send 511 byte failed, because |
通过 swoole 论坛 : https://group.swoole.com/question/106324
韩大大 回复是 : 这种错误请忽略吧,出错原因是发送数据时连接已经关闭了。有些客户端确实会出现这种情况。 |
文章作者: Leon
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Leon!
相关推荐
2023-12-10
Swoole 抛错 : WARNING ProcessPool::spawn(): fork() failed, Error: Resource temporarily unavailable[11]
这个错误表示在Swoole中使用ProcessPool::spawn()方法创建子进程时,fork()系统调用失败了。错误消息中的”Resource temporarily unavailable”表示资源暂时不可用,错误码为11。 这种错误通常是由于操作系统限制导致的。在Linux系统中,每个进程都有一个”最大进程数”限制,即每个用户(或进程)可以创建的最大子进程数量。当达到该限制时,fork()系统调用将无法创建新的进程,从而引发这个错误。 解决这个问题的方法包括: 增加系统的”最大进程数”限制:可以通过修改Linux系统的ulimit设置来增加每个用户(或进程)可创建的最大进程数。可以使用ulimit -u命令查看当前的限制,并使用ulimit -u <new_limit>命令来修改限制值。 优化进程使用:检查代码中是否存在创建大量子进程的情况,是否可以通过调整逻辑或使用进程池等方式减少子进程的数量,从而避免达到系统限制。 检查系统资源:确保系统资源(如内存、文件描述符等)没有达到极限,导致无法创建新的进程。可以通过ulimit命令或其他系统监控工具来查看...

2024-12-12
MySQL的连接池、异步、断线重连
MySQL的连接池、异步、断线重连 MySQL长连接MySQL短连接每次请求操作数据库都需要建立与MySQL服务器建立TCP连接,这是需要时间开销的。TCP连接需要3次网络通信。这样就增加了一定的延时和额外的IO消耗。请求结束后会关闭MySQL连接,还会发生3/4次网络通信。 close操作不会增加响应延时,原因是close后是由操作系统自动进行通信的,应用程序感知不到 长连接就可以避免每次请求都创建连接的开销,节省了时间和IO消耗。提升了PHP程序的性能。 断线重连在cli环境下,PHP程序需要长时间运行,客户端与MySQL服务器之间的TCP连接是不稳定的。 MySQL-Server会在一定时间内自动切断连接 PHP程序遇到空闲期时长时间没有MySQL查询,MySQL-Server也会切断连接回收资源 其他情况,在MySQL服务器中执行kill process杀掉某个连接,MySQL服务器重启 这时PHP程序中的MySQL连接就失效了。如果仍然执行mysql_query,就会报一个“MySQL server has gone away”的错误。程序处理不到...
2023-12-25
Swoole WARNING Worker_discard_data (ERRNO 1007): [2] ignore data
Swoole WARNING Worker_discard_data (ERRNO 1007): [2] ignore data 常见于: 浏览器疯狂刷新页面 (还没加载完就刷掉了)ab 压测到一半取消wrk 基于时间的压测 (时间到了未完成的请求会被取消)以上几种情况均属于正常现象,可以忽略,所以该错误的级别是 NOTICE 如由于其它情况无缘无故出现大量连接断开时,才需要注意 WARNING swWorker_discard_data (ERRNO 1007): [2] received the wrong data[21 bytes] from socket#75WARNING Worker_discard_data (ERRNO 1007): [2] ignore data[5 bytes] received from session#2Copy to clipboardErrorCopied 同样的,这个错误也表示连接已经关闭了,收到的数据会被丢弃。参考 discard_timeout_request discard_timeout_request丢弃已关闭链接的...
2019-06-20
Swoole Task 阻塞 Worker 开发教训
在使用 Swoole 进行异步编程时,Task 进程是处理耗时操作的有效工具。然而,由于 Task 进程的队列机制,可能会导致阻塞,从而影响 Worker 进程的性能。以下是一些常见的坑和解决方案,以帮助您优化 Swoole Task 的使用。 1. Task 进程队列的阻塞问题描述当多个 Worker 进程同时向 Task 进程发送任务时,如果 Task 进程处理速度跟不上 Worker 进程的请求速度,就会导致 Task 进程的队列堆积。此时,如果 Task 队列满了,Worker 进程在调用 Task 时可能会被阻塞,进而影响整个应用的响应能力。 解决方案 合理设置最大任务数:在 Swoole 的配置中,可以设置 max_task_num 来限制 Task 进程的最大任务数,从而减少 Task 进程的排队压力。 swoole_set_process_name("my_task_process");$taskWorker = new Swoole\Server("127.0.0.1", 9501);$taskWorker->...
2018-08-23
Swoole 日志 部分代码
/** * @desc work进程内日志 仅限work 进程内使用 * @author lbf * @param $msg * @param string $name *------------------------------------------------------ */public static function Wlog($msg, $name = Log::MATCH){ if (!Main::WRITE_DEBUG_LOG && $name == Log::DEBUG) return; $name = $name == Log::DEBUG ? Log::MATCH : $name; $name = $name == Log::SQL ? Log::MATCH : $name; $str = ''; if (is_array($msg)) { foreach ($msg as $key => $val) { if (i...
2017-01-01
使用EasySwoole 1.2搭建Echo服务器
使用EasySwoole 1.2搭建Echo服务器在本篇博客中,我们将介绍如何使用EasySwoole 1.2框架搭建一个简单的Echo服务器。EasySwoole是一个高性能的PHP框架,专注于异步、协程和高并发的开发。 准备工作在开始之前,确保你已经安装了PHP和Composer,并具备基本的PHP开发知识。 步骤一:创建项目首先,我们需要创建一个新的EasySwoole项目。在命令行中执行以下命令: composer create-project easyswoole/easyswoole=1.2.x-dev 这将创建一个名为easyswoole的项目,并安装所需的依赖项。 步骤二:配置服务器进入项目目录,并打开dev.php文件,配置服务器相关的设置。我们将使用Echo服务器作为示例。 // dev.phpreturn [ 'SERVER_NAME' => 'EasySwoole', 'MAIN_SERVER' => [ 'LISTEN_ADDRESS...
评论
公告
记录技术实践,分享学习与思考。



