OpenWrt 装不上 FFmpeg 的排查过程
记录一次在 OpenWrt 上用 opkg 安装 FFmpeg 反复报错的排查思路,从源更新、包搜索、依赖强制安装到手动编译都走了一遍。
支持通配符SSL证书、多域名证书、IP证书。适配ACME接口, 支持Zerossl、Let's Encrypt和Google等渠道。登录已有账号
2026-07-11 10:15:47 MySQL Too many connections 数据库连接泄露 故障排查
线上收到报警,数据库报 Too many connections,应用页面直接挂了。这种问题一般就两个方向:要么连接数真不够用,要么代码有地方没释放连接。
上来先确认是不是真到了上限。连上 MySQL 执行:
SHOW VARIABLES LIKE 'max_connections';
SHOW STATUS LIKE 'Threads_connected';
如果 Threads_connected 已经和 max_connections 贴得很近,那确实被打满了。这时候可以先应急调大一点,让业务恢复。
临时生效,重启后会丢:
SET GLOBAL max_connections = 500;
但光提上限没用,得看都是谁占着连接。
用 SHOW PROCESSLIST 看一眼,一堆 Sleep 状态而且同一个用户、同一台机器过来的,基本就是连接池没回收或者长连接忘了关。统计一下更直观:
SELECT user, host, COUNT(*) AS conn_count
FROM information_schema.processlist
GROUP BY user, host
ORDER BY conn_count DESC;
哪个应用对应的用户连接数飙得最高,查那个应用的代码或连接池配置。这里其实容易踩坑:有些框架的连接池默认不设超时,或者代码里在循环里 new 连接却不 close,本地测不出来,一上量就炸。
如果只是连接数设置偏小,确实可以把 max_connections 改大并持久化。找到 my.cnf(或 my.ini),在 [mysqld] 下面加上:
[mysqld]
max_connections = 500
然后重启 MySQL 生效。重启命令:
sudo systemctl stop mysql
sudo systemctl start mysql
但很多场景下,把空闲连接尽快踢掉比无限堆上限更有用。
wait_timeout 和 interactive_timeout 控制非交互和交互连接的空闲存活时间,默认值经常是 28800(8 小时),线上完全可以缩到几分钟。
先看看当前值:
SHOW VARIABLES LIKE 'wait_timeout';
SHOW VARIABLES LIKE 'interactive_timeout';
临时调整:
SET GLOBAL wait_timeout = 300;
SET GLOBAL interactive_timeout = 300;
同样,要永久生效就写进配置文件里。这两个参数经常一起调,一个是针对非交互式连接,另一个针对交互式连接,一般线上两个设成一样就行。
说到连接泄漏,PHP 里用 mysqli 的话,别忘了显式调用 close(),或者依赖脚本结束自动释放——不过显式关掉更靠谱。下面是一段正确管理连接的示例:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 执行查询...
$sql = "SELECT * FROM users";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["name"]. "<br>";
}
} else {
echo "0 结果";
}
// 关闭连接
$conn->close();
?>
后期做监控,可以定期采集 max_connections 和历史上最大的并发连接数 Max_used_connections,这个值在 SHOW STATUS 里能拿到。算一下比例:Max_used_connections / max_connections * 100%,理想状态在 85% 左右。
如果远低于这个数,说明 max_connections 设大了,浪费资源;接近 100% 就说明峰值快扛不住了,要么优化查询,要么扩连接数。
这套排查流程走下来,大部分 Too many connections 的问题都能定位到原因。不是代码没关连接,就是超时时间太长,再不然就是连接数确实配低了。
硬调连接数不查泄露,早晚还得再报一次。
记录一次在 OpenWrt 上用 opkg 安装 FFmpeg 反复报错的排查思路,从源更新、包搜索、依赖强制安装到手动编译都走了一遍。
把工作中遇到的 @ConfigurationProperties 配置绑定失效场景整理了一下,从依赖、注解、配置文件到多模块扫描,附带直接可用的示例。
还在为Linux下mount挂载文件系统时遇到的"wrong fs type, bad option, bad superblock"错误而头疼?本文提供了一套完整、实用的排查指南,从检查挂载点、文件系统类型到ISO文件完整性,手把手教你定位问题并轻松解决,告别挂载困境!
在处理大量数据库数据时,是否常常需要提取字段的开头部分?本文将为你揭示MySQL LEFT()函数的强大之处,让你告别繁琐的手动操作。学习如何快速截取字符串前几位,并了解其在实际开发中的高效应用,如日志前缀分析、URL域名提取等,提高你的工作效率。
本文深入解析了MySQL配置SSL加密访问的实现步骤,详细阐述了自建证书和CA签发证书两种方法,并提供了详细的示例代码和配置指导,旨在提升数据库连接的安全性。