问题及追踪

  • 对于生产环境,尤其是配置较低的生产环境,一定要注意资源的使用

  • 今天就遇到一个问题,服务器磁盘接近满了,部署的平台服务异常,无法提供服务

  • 简单说一下客户环境:客户只有老的Windows server 服务器,没有经费采购新的服务器,根据客户接入设备数量和用户数量等条件,我们决定就在这台Windows机器上部署平台

  • 我们在服务器里使用Virtual Box装了CentOS虚拟机,部署平台服务。初始给虚拟机分配了250G磁盘空间,root目录50G(默认的,没动它),其余都给了home目录(平台服务基本都部署在home),这里的截图是处理之后的(磁盘满的问题处理掉了)
    在这里插入图片描述

  • 磁盘空间满,还是比较容易排查的。df -hl看到下,是root目录接近满了

  • 继续追踪了下原因,使用find命令查找大文件,发现是clickhouse相关目录占用了大量空间

  • 命令如下:从根目录开始查找超过800M的大文件

find / -type f -size +800M -exec ls -lh {} \; | awk '{ print $9 ":" $5 }';
  • clickhouse是我们用来存储前端雷达及卡口设备实时数据的大数据组件,对服务器性能要求还是比较高的。当接入设备后,确实会产生很大的数据量,我们会提前准备好磁盘空间
  • 但是实际上,这个客户并没有接入前端雷达及卡口设备,只是服务启动着,有两个Java服务连接着clickhouse数据库,但并没有数据写入需求,数据查询次数也很少
  • 至于为什么不使用也部署了它,是为了保持客户环境里的平台,与我们的发行版本保持一致性,代码版本一致。后续客户有需要时,重新找一台配置好点的服务器,重新部署下clickhouse数据库即可

问题处理

  • 发现了问题,先解决掉问题,让客户能正常使用平台
  • 关闭clickhouse服务,关闭开机启动,删除对应文件夹
systemctl stop clickhouse-server
systemctl disable clickhouse-server
rm -rf  /var/lib/clickhouse
rm -rf /var/log/clickhouse-server
  • clickhouse部署后,由于没有真正使用它,也就直接使用了默认配置,它的存储和日志也就都落在了root目录下
  • 其实clickhouse带来的磁盘空间占用问题,以前处理过一次,也记录了一篇博客ClickHouse默认库system日志清理方法(query_log、asynchronous_metric_log)
  • clickhouse运行,会产生一些系统日志,记录查询和写入的一些操作,便于后续对clickhouse使用进行分析和优化,它们存储在默认库system里,时间长了也会占用很多空间
    在这里插入图片描述
  • 但是我们可以通过修改配置,只保留最近一周或三天的系统日志,这样就不会占用很多空间,具体做法可以参考我前面提到的博客,里面有详细介绍
  • 对于真正用到clickhouse服务的客户,我们会要求服务器性能好一点,内存至少32G,16核cpu,磁盘1T等,也会提前设置好保留日志天数
  • 没想到的是,没有对clickhouse数据库的写入操作(只有极少量查询操作),也会产生很多系统日志,然后慢慢的占用磁盘空间
  • 这次事件,是clickhouse服务部署8个月左右发生的,占用了磁盘35G左右的空间
  • 在此再写篇博客记录下,clickhouse使用,一定要注意清理系统日志。生产平台使用,一定要注意清理日志,时刻关注磁盘空间。
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐