我有个问题。当我将我的MariaDB从主服务器拆分到另一台服务器时(我的数据库服务器正在运行最新标签中的MariaDB docker(,我得到了一个错误:
写入通信数据包时出错
我有两个服务器,一个是Web服务器(没有数据库(,另一个是ubuntu 20.04,带有4gig ram和4核(每个核2gh(
端口已打开,我的PING小于1ms。
我尝试了一个基本的WP站点数据库,连接正常,没有问题,但我的数据库大约是1GB,我想这造成了这个问题。
我也尝试通过专用网络(192.168.100.25
(而不是公共IP进行连接,但问题是一样的。
这是我的MariaDB日志
中止与数据库的连接3:"wpdb"用户:"root"主机:"myip"(读取通信数据包时出错(
中止与数据库的连接5:'wpdb'用户:'root'主机:'myip'(写入通信数据包时出错(
我还编辑了MariaDB配置:
- 将最大允许数据包增加到1GB
- 将net_buffer_length增加到1000000
但没有任何变化!
以下是mariadb变量:https://pastebin.ubuntu.com/p/yHFRh7CnVC/
显示全局状态:https://pastebin.pl/view/b3db2b91
显示进程列表:
8,root,31.56.66.249:60612,,查询,0,启动,显示完整的PROCESSLIST,0
服务器根目录上的ulimit:
ubuntu@rangoabzar:~$ ulimit -a
ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 15608
max locked memory (kbytes, -l) 65536
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 15608
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
码头集装箱中的ulimit:
root@63aa95764534:/# ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 15608
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1048576
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
iostat
htop
我通过执行返回多行的查询,然后使用行处理这些行,得到了同样的错误。Next(((在Golang中(,并且由于一个不相关的错误而提前退出而不调用行。Close((。令人困惑的是,它最初几次都有效,但最终失败了,这表明一些资源(连接?(正在耗尽。
我可以利用Golang的延期声明,只做
推迟行。关闭((
在调用行之前。Next((,但调用行。在行的每个早期退出之前关闭((。Next((循环同样有效。