1、问题
近期发现服务器cpu居高不下,和被黑后cpu打满不一样的是,此时cpu占用为92%,其他项目还能跑,只是慢了点。运维大哥看了看,说问题出在某个java应用上;我仔细一瞧,这不是geoserver么!
再让运维大哥排查了一下,发现此时该进程在疯狂写日志。想来也是,geoserver默认的日志级别是挺详细的,每个服务的调用都有记录;随着服务的增多,确实有可能会出现这种情况。
2、解决
知道问题在哪就好说了,只需调整一下日志级别就行。找到两个解决方案,这里记录一下。
2.1 修改配置文件
在geoserver/data目录下有个logging.xml文件,打开后内容如下:
其中level肯定就是级别,location是日志位置,stdOutLogging的官网解释是“是否将日志写到启动程序的控制台”。我将其理解为如果用tomcat启动,是否将日志打印到tomcat的控制台。
只是有一点没理解,为什么level的值是一个没见过的东西,而不是常见的ERROR、WARN、DEBUG?这个问题困扰了我好一会,直到注意到在geoserver/logs目录下有一堆.properties结尾的文件。
瞧,第一个文件的文件名与level的值一毛一样。
再在官网上翻了翻,找到了关于这几个文件的说明:
我就不一一翻译了,打眼一看就看到了Minimal,对应的文件是PRODUCTION LOGGING,直译就是生产环境日志。那就这个了!
修改配置文件,重启geoserver,cpu直接降到了2%!
2.2 全局设置
第二种方法是后来在网上闲逛的时候发现的。这种方法是直接在geoserver页面设置:
3、 拓展
根据官网上的说法,所有日志配置文件都是log4j的,因此可以自定义配置文件。如果对log4j比较熟,可以试试自定义;只需要文件名保持*_LOGGING.properties的格式。
配置方法见官网:
https://docs.geoserver.org/latest/en/user/configuration/logging.html#custom-logging-profiles
4、参考
https://docs.geoserver.org/latest/en/user/configuration/globalsettings.html#config-globalsettings-log-location
https://www.cnblogs.com/alunzuishuai/p/16344876.html#_454