mm-wiki的packets.go:36: unexpected EOF解决

背景

MM-Wiki 是一个轻量级的企业知识分享与团队协同软件,可用于快速构建企业 Wiki 和团队知识分享平台。部署方便,使用简单,帮助团队构建一个信息共享、文档管理的协作环境。
https://github.com/phachon/mm-wiki

某天服务器磁盘满了以后,出现已经登录的用户会闪退回登录界面的问题。以下是debug的过程。

环境介绍

Linux 18.04
mm-wiki 0.2.1
mysql

问题排查

在mm-wiki的

mm_wiki
├── logs
│    └──mm-wiki.logs
└──nohup.out
日志页面

解决问题

在网上查找该问题,发现是go-sql-driver的问题,而且有人给出了解决办法。


连接器的issues页面

在该issure下出现的回打如下,就是将最大空闲链接设置为0。


连接器的issues页面

查找网上的设置方法: SetMaxIdleConns
默认情况下 sql.DB 会在链接池中最多保留 2 个空闲链接。可以通过 SetMaxIdleConns() 方法更改此方法,如下所示:

// 初始化一个新的链接池
db, err := sql.Open("postgres", "postgres://user:pass@localhost/db")
if err != nil {
    log.Fatal(err)
}

// 将最大并发空闲链接数设置为 5.
// 小于或等于 0 表示不保留任何空闲链接.
db.SetMaxIdleConns(5)

Stack overflow 提供的解决办法也是将MaxIdleConnections修改为0就解决该问题。https://stackoverflow.com/questions/39980902/golang-mysql-error-packets-go33-unexpected-eof

针对mm-wiki的解决方法如下。
首先找到配置文件,所在路径为mm_wiki/conf/mm-wiki.conf

$ cd /mm_wiki/conf/
$ sudo nano mm  mm-wiki.conf

将其中的conn_max_idle修改为0。然后ctrl + x保存文件后退出。

配置文件

修改完毕以后,尝试启动项目:

$ ./mm-wiki --conf conf/mm-wiki.conf

如果启动成功可以使用nohup将项目挂载起来。

$ nohup ./mm-wiki --conf conf/mm-wiki.conf &

总结

系统设计的时候,也应该有个conf文件,避免debug的时候需要重新编译和打包,这种设计方案可以在生产环境中直接重启,让配置生效。

参考文档

  • 如何配置 sql.DB 的 SetMaxOpenConns SetMaxIdleConns 和 SetConnMaxLifetime

你可能感兴趣的:(mm-wiki的packets.go:36: unexpected EOF解决)