Directadmin的dataskq进程占用cpu 100%经常导致死机

Directadmin的dataskq进程占用cpu 100%经常导致死机,第1张

Directadmin的dataskq进程占用cpu100%经常导致死机

问题症状

这是一个蛮悲催的bug问题,directadmin官方帮助文档中有此记载,它会长期占用cpu100%,且会造成死机。

沈id=402.

其实这个错误的原因远不止这些。但总体解决方案还是一样的。

原因检查

我们可以通过dataskq的错误日志看到发生了什么。执行下面的命令行来读取最后50行日志的dataskq错误日志。

tail-n50/var/log/directadmin/errortaskq.log 到目前为止,我发现错误日志记录有很多种。比如: 2016:01:11-20:31:18:Ticket::deliverMessage::Can’tread./data/admin/tickets.list:UnabletogetLockonfile:fileislockedbyanotherprocess 造成这个问题的原因通常是directadmin面板中消息系统的邮件票太多。导致无法正常阅读。 2016:01:06-20:04:01:Usernameadministratoris13characterslong,butthedirectadmin.confhasthissetting‘max_username_length=10’ 这个问题的原因是用户名大于13个字符,而默认情况下只允许10个字符。虽然也可以修改/usr/local/directadmin/conf/directadmin.conf文件的max_username_length值,但最多只能设置为14个字符,所以在创建用户名时最好避免使用。 2016:02:05-14:14:37:ConfigFile::writeFile(./data/admin/brute_user.data):Timestampfromwhenitwasreadisdifferent,overwritinganyway

解决方法

知道了具体问题的原因,至少可以尽量避免和优化,即使不能完全消除。下面就来说说如何处理这类问题。

①首先,如果没有崩溃,但是已知dataskq占用了100%的CPU,那么会执行下面的命令步骤。
在SSH中执行以下命令行;

killalldataskq >/usr/local/directadmin/data/admin/brute_log_entries.list sed-i's/root\/usr/rootnice-n19\/usr/g'/etc/cron.d/directadmin_cron

上面的命令行用于结束当前dataskq进程,清除/usr/local/directadmin/data/admin/brush_log_entries.list空的内容,降低dataskq的优先级。
/usr/local/directadmin/data/admin/brute_log_entries.list该文件保存主机的登录日志,包括登录成功或失败的所有记录。因为全球的网络环境没有那么干净,大量的肉机无时无刻不在扫描破解任何一个ip。因此,文件中可能存储有大量记录,并且该文件属于文本文件。如果长时间没有清理,文件会变得非常大。如果打开一个非常大的文本文件,会占用很多资源。所以要及时清理。

②造成这个问题的情况大多是硬盘占用了大量的IO读写,导致硬盘运行缓慢,然后任何进程都变得非常慢,效率越来越低。由于这是一个长时间运行的过程,内存最终可能会耗尽,然后崩溃。所以我们要检查是否有可能是大量的小文件占用了硬盘,比如messagesystem,也就是directadmin里面的内部邮件提醒。如果有大量的消息邮件,可能会导致点击消息时崩溃,所以我们需要及时清理。您可以在/home/users/Maildir/new/中清理它。例如,如果是管理员用户,那么

rm-f/home/admin/Maildir/new/*

然后从面板中删除消息列表

>/usr/local/directadmin/data/admin/tickets.list

此外,directadmin自己的目录中还有一个门票的预留数据,随着时间的推移会不断积累。可以通过以下命令清除它。

rm-rf/usr/local/directadmin/data/tickets/*

③手术1和2后,这个治疗结束,暂时正常。接下来,我们将优化directadmin上面的项目。以免下次因为同样的原因犯错。优化的内容有三个。分别是“定期清理消息邮件”、“自动清理brute_log_entries.list的登录日志列表”、“拦截已知恶意ip登录”
定期清理消息邮件:我们可以在图中所示的位置设置一个值作为自动清理日志的合理周期。

自动清理brute_log_entries.list的登录日志列表:我们需要在ssh中创建一个cron调度任务来自动清理空登录日志,如下所示

crontab-e

然后编辑内容,比如我们设置为每周五下午2点自动清理brute_log_entries.list。编辑如下

014**5>/usr/local/directadmin/data/admin/brute_log_entries.list

然后设置删除票证文件和列表。

015**5rm-rf/usr/local/directadmin/data/tickets/* 215**5>/usr/local/directadmin/data/admin/tickets.list

保存内容并重新启动。

servicecrondrestart

屏蔽已知的恶意ip登录:

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/744505.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-29
下一篇 2022-04-29

发表评论

登录后才能评论

评论列表(0条)

保存