[踩坑] Swoole 抛错 记录
近期遇到三个swoole 的抛错日志, 很头疼 有的有解释 有的并没有, 但总体也算是解决了问题. [2023-11-21 19:44:02<.978122> #9118.2] WARNING del (ERRNO 800): failed to delete events[430], it has already been removed[2023-11-21 22:17:28<.225417> *19693.61] WARNING Worker_discard_data (ERRNO 1007): [2] ignore data[1272 bytes] received from session#15689[2023-11-18 09:15:07 *22844.90] WARNING send_blocking(:206): send 40 bytes failed, Error: Resource temporarily unavailable[11] 问题如上 3种抛错, 数据都是swoole抛错日志, 需要注意的是 : 在Swoole 日...
查看 Mysql 8.0 一分钟内调用的最多的sql
要查看MySQL 8.0一分钟内调用最多的SQL语句,可以使用MySQL Performance Schema来进行监控和分析。下面是一种可能的方法: 确保已启用Performance Schema:在MySQL配置文件(通常是 /etc/my.cnf 或 /etc/mysql/my.cnf)中,确保以下配置设置被启用: performance_schema = ON 如果已经启用,请跳过此步骤。 查询Performance Schema视图:使用以下查询来获取一分钟内调用最多的SQL语句: SELECT DIGEST_TEXT AS SQL, COUNT(*) AS CallsFROM performance_schema.events_statements_summary_by_digestWHERE LAST_SEEN >= NOW() - INTERVAL 1 MINUTEGROUP BY DIGEST_TEXTORDER BY Calls DESCLIMIT 10; 这个查询将从 performance...
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丢弃已关闭链接的...
Shell 扫描目录下文件, 格式化生成SQL分割文件.
[root@data table]# ls20230717 20230725 20230802 20230810 20230818 20230826 20230903 20230911 20230919 20230927 20231005 20231013 20231021 20231029 2023110620230718 20230726 20230803 20230811 20230819 20230827 20230904 20230912 20230920 20230928 20231006 20231014 20231022 20231030 2023110720230719 20230727 20230804 20230812 20230820 20230828 20230905 20230913 20230921 20230929 20231007 20231015 20231023 20231031 2023110820230720 20230728 20230805 ...
Swoole 抛错 ; WARNING timer_callback (ERRNO 9007): No idle worker is available
根据提供的错误消息,这是一个关于Swoole服务的错误。错误消息中的WARNING timer_callback (ERRNO 9007): No idle worker is available表示没有空闲的工作进程可用。 这种情况通常发生在Swoole服务的工作进程池已满,无法处理更多的请求或任务。当所有工作进程都在忙于处理请求时,新的请求将无法得到处理,从而导致该警告出现。 解决该问题的方法可以考虑以下几点: 增加工作进程数:可以通过增加Swoole服务的工作进程数来扩展处理能力。可以在Swoole的配置文件或代码中找到关于工作进程数的设置项,并适当增加工作进程的数量。 优化代码逻辑:检查Swoole服务中的代码逻辑,确保没有长时间阻塞的操作或耗时过长的任务。如果存在耗时操作,可以考虑使用异步或并发处理方式,以充分利用工作进程资源。 调整资源限制:检查服务器的资源限制,例如文件句柄数、内存限制等。确保这些限制不会导致工作进程无法创建或执行。 监控和调优:使用合适的监控工具来监视Swoole服务的性能指标,例如请求处理速度、工作进程状态等。根据监控结果进行调优,找出性能...
Linux性能分析工具 : Perf
当使用perf工具进行性能分析时,可以通过以下步骤来获取系统和应用程序的性能数据,并通过分析结果来优化性能。本篇博客将介绍perf工具的基本使用方法和示例。 Perf工具简介perf是一个功能强大的Linux性能分析工具,它可以帮助开发者定位和解决性能问题。它提供了多种功能,包括采样分析、事件计数、跟踪和调试等。下面将介绍几个常用的perf命令。 安装perf工具perf工具通常随Linux内核一起发布,可以通过以下命令安装: sudo apt-get install linux-tools-common linux-tools-$(uname -r) 基本命令 采样分析 采样分析是perf工具的一项重要功能,它通过在一段时间内对CPU进行采样,收集程序运行时的函数调用栈。可以使用以下命令进行采样分析: perf record -g <command>perf report 事件计数 perf工具可以对指定的硬件事件进行计数,以便了解系统和应用程序的性能指标。可以使用以下命令进行事件计数: perf stat <command> 跟踪 ...
如何查看 进程已经创建了多少子进程
要查看一个进程已经创建了多少子进程,可以通过使用系统工具和命令来获取相关信息。下面是几种常用的方法: 使用ps命令: ps -eLf | grep <进程ID>```用上述命令替换`<进程ID>`为你要查看的进程的ID。这会列出指定进程及其子进程的详细信息,包括进程ID(PID)和父进程ID(PPID)。 使用pstree命令: pstree -p <进程ID>```同样,将`<进程ID>`替换为你要查看的进程的ID。`pstree`命令会以树状结构显示进程及其子进程的关系,包括对应的进程ID。 使用pgrep命令: pgrep -P <进程ID> | wc -l```这个命令会统计指定进程的子进程数量。将`<进程ID>`替换为你要查看的进程的ID。`pgrep -P <进程ID>`会列出指定进程的所有子进程的ID,通过`wc -l`命令可以计算出子进程的数量。 请注意,以上命令在不同的操作系统和版本中可能会有所差异。你可以根据自己的操作系统选择适用的命令,并根据需要进行进一步的处理和...
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命令或其他系统监控工具来查看...
PHP IP 处理 ip2long() 和 inet_pton()
这两个方法 ip2long() 和 inet_pton() 都是用于处理 IP 地址的函数,但是它们在处理的方式和支持的 IP 地址类型上有所不同。 ip2long($ip): ip2long() 是一个 PHP 内置函数,用于将 IPv4 地址(点分十进制表示)转换为对应的无符号长整型数值。 它接受一个 IPv4 地址作为参数,并返回对应的无符号长整型数值。如果输入的 IP 地址格式不正确,则返回 false。 示例: $ip = '192.168.0.1';$ipNum = ip2long($ip);echo $ipNum; // 输出:3232235521 inet_pton($ip): inet_pton() 是一个 PHP 内置函数,用于将 IPv4 或 IPv6 地址转换为对应的二进制表示。 它接受一个 IP 地址作为参数,并返回一个包含二进制表示的字符串。如果输入的 IP 地址格式不正确,则返回 false。 inet_pton() 可以处理 IPv4 和 IPv6 地址。 示例: $ipv4 = '192.1...
MySQL中Decimal类型和Float/Double等区别
MySQL中Decimal类型和Float/Double等区别在MySQL中,存在float、double等非标准数据类型,以及decimal这种标准数据类型。它们之间的区别如下: float、double等非标准类型在数据库中保存的是近似值,而decimal则以字符串的形式保存数值。 float和double类型可以存储浮点数(即小数类型),但是float有一个问题,当给定的数据是整数时,它会以整数形式存储。这在处理货币值时会遇到问题,例如,如果默认值为0.00,实际存储的却是0;同样,如果存储货币值为12.00,实际存储的是12。 幸好MySQL提供了decimal这个数据类型,它可以轻松解决上述问题。decimal类型在MySQL中以相同的类型实现,这符合SQL92标准。它们用于保存对准确精度有重要要求的值,例如与金钱有关的数据。 数据定义 float(M,S):其中M表示全长,S表示小数点后的长度。以下是一个示例: CREATE TABLE t1 (c1 float(10,2), c3 decimal(10,2));INSERT INTO t1 VALUES (...
![[踩坑] Swoole 抛错 记录](/assets/migrated/6ccda2ed99f8cc5a7155.png)



