MySQL配置不当导致Sonarqube出错的一次经历:Packet for query is too large (16990374 > 13421568)
公司里部署了Jenkins + Sonarqube对项目代码进行构建和代码质量扫描。
某个大型项目报告项目构建失败。进jenkins看,该项目构建日志中的报错信息是这样的:
通过错误堆栈中的信息可以判断是Sonarqube服务器出现了500错误,所以需要到Sonarqube中继续查找原因。
登录到Sonarqube服务器上,开始翻看Sonarqube的日志文件,很快在web.log文件中发现这样的错误信息:
报错信息如下:
Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (16990374 > 13421568). You can change this value on the server by setting the max_allowed_packet' variable.
关键信息很明确:Packet for query is too large (16990374 > 13421568). You can change this value on the server by setting the max_allowed_packet' variable
错误是在mysql.jdbc产生的,显然是MySQL的配置问题。出错的是个大型项目,代码量很大,MySQL的默认配置不满足需要。
去网上搜了一下如何配置max_allowed_packet,很快找到方法,修改 /etc/my.cnf,在[mysqld]下加入以下两行:
max_allowed_packet = 1g
slave_max_allowed_packet = 1g
配置完后,重启MySQL,重启Sonarqube。
如果不重启Sonarqube,Sonarqube还是会使用原先的参数运行,会报一样的错误。