Hướng dẫn khắc phục dataskq chiếm tải cao trên Directadmin

dataskq Causing High Load On DirectAdmin

Hướng dẫn khắc phục dataskq chiếm tải cao trên Directadmin
Vào 1 ngày đẹp trời mình thấy Website chạy quá ì ạch trong khi lượng truy cập ít,
Mình vào DA Service Monitor thấy top 5 processes sử dụng tới 99% CPU và cùng processes

11477 root    20  0  324m 196m 1580 R 53.3  5.2  17153:50 /usr/local/directadmin/dataskq                                
 7738 root    20  0  315m 183m 1580 R 49.3  4.8  15702:50 /usr/local/directadmin/dataskq                                
17973 root    20  0  307m 170m 1592 R 59.5  4.5  14271:42 /usr/local/directadmin/dataskq                                
15411 root    20  0  285m 159m 1592 R 58.9  4.2  9984:23 /usr/local/directadmin/dataskq                                
18812 root    20  0  299m 158m 1592 R 50.0  4.2  12829:33 /usr/local/directadmin/dataskq                                
32016 root    20  0  292m 146m 1592 R 49.7  3.8  11400:47 /usr/local/directadmin/dataskq                                
10846 root    20  0  254m 125m 1592 R 61.8  3.3  8605:18 /usr/local/directadmin/dataskq                                
22175 root    20  0  248m 114m 1592 R 54.9  3.0  7239:59 /usr/local/directadmin/dataskq                                
28472 root    20  0  241m 104m 1592 R 52.6  2.7  5916:28 /usr/local/directadmin/dataskq                                
 2738 root    20  0  239m  98m 1700 R 49.7  2.6  4753:17 /usr/local/directadmin/dataskq                                
 7807 root    20  0  212m  84m 1836 R 49.3  2.2  3698:22 /usr/local/directadmin/dataskq                                
11449 root    20  0  202m  75m 1836 R 49.7  2.0  1870:38 /usr/local/directadmin/dataskq                                
 6370 root    20  0  205m  73m 1836 R 50.0  1.9  2744:47 /usr/local/directadmin/dataskq                                
22093 root    20  0  178m  52m 1836 R 52.0  1.4  1042:42 /usr/local/directadmin/dataskq                                
26249 root    20  0  152m  27m 1844 R 54.9  0.7 266:05.08 /usr/local/directadmin/dataskq

Server của mình đã quá tải và dataskq là nguyên nhân dẫn tới tất cả các Service khác đều bị crash, Làm như thế nào để mình khắc phục vấn đề này
đầu tiên mình phân tích một process để tìm hiểu nguyên nhân với command

lsof -p 11477

Mình thu được kết quả

COMMAND  PID USER  FD  TYPE DEVICE  SIZE/OFF   NODE NAME
dataskq 11477 root  cwd   DIR  259,4    4096 21106008 /usr/local/directadmin
dataskq 11477 root  rtd   DIR  259,4    4096     2 /
dataskq 11477 root  txt   REG  259,4  8893140 21106014 /usr/local/directadmin/dataskq
dataskq 11477 root  mem   REG  259,4   65928  7602205 /lib64/libnss_files-2.12.so
dataskq 11477 root  mem   REG  259,4   122040  7602226 /lib64/libselinux.so.1
dataskq 11477 root  mem   REG  259,4   10192  7602373 /lib64/libkeyutils.so.1.3
dataskq 11477 root  mem   REG  259,4   43728  7602382 /lib64/libkrb5support.so.0.1
dataskq 11477 root  mem   REG  259,4   469528  7602181 /lib64/libfreebl3.so
dataskq 11477 root  mem   REG  259,4   277704  7602374 /lib64/libgssapi_krb5.so.2.2
dataskq 11477 root  mem   REG  259,4   142640  7602213 /lib64/libpthread-2.12.so
dataskq 11477 root  mem   REG  259,4  1921216  7602189 /lib64/libc-2.12.so
dataskq 11477 root  mem   REG  259,4   90880  7602578 /lib64/libgcc_s-4.4.7-20120601.so.1
dataskq 11477 root  mem   REG  259,4   596264  7602197 /lib64/libm-2.12.so
dataskq 11477 root  mem   REG  259,4   987096 21103632 /usr/lib64/libstdc++.so.6.0.13
dataskq 11477 root  mem   REG  259,4   110960  7602215 /lib64/libresolv-2.12.so
dataskq 11477 root  mem   REG  259,4   14664  7602247 /lib64/libcom_err.so.2.1
dataskq 11477 root  mem   REG  259,4   174840  7602378 /lib64/libk5crypto.so.3.1
dataskq 11477 root  mem   REG  259,4   941920  7602380 /lib64/libkrb5.so.3.3
dataskq 11477 root  mem   REG  259,4   19536  7602195 /lib64/libdl-2.12.so
dataskq 11477 root  mem   REG  259,4   98661 21106191 /usr/local/lib/libz.so.1.2.3
dataskq 11477 root  mem   REG  259,4  1950976 21104485 /usr/lib64/libcrypto.so.1.0.1e
dataskq 11477 root  mem   REG  259,4   40400  7602193 /lib64/libcrypt-2.12.so
dataskq 11477 root  mem   REG  259,4   437016 21104487 /usr/lib64/libssl.so.1.0.1e
dataskq 11477 root  mem   REG  259,4   154520  7602580 /lib64/ld-2.12.so
dataskq 11477 root   0r  REG  259,4    2795  8792180 /home/tmp/quota-dump (deleted)
dataskq 11477 root   1r  REG  259,4 710688943 21633577 /usr/local/directadmin/data/users/detvl/bandwidth.tally

Tiếp theo mình xem errortaskq.log để xem đang có vấn đề gì với lệnh sau.

tail -n 10 /var/log/directadmin/errortaskq.log

Mình thấy kết quản trả ra sau,

==> /var/log/directadmin/errortaskq.log <==
2014:08:28-09:07:38: Dataskq USR1 signal: Currently processing: Tally::get_bandwidth_breakdown(..., 0) for detvl : done reading, begin parsing
2014:08:28-09:07:38: Dataskq USR1 signal: Currently processing: Tally::get_bandwidth_breakdown(..., 0) for detvl : done reading, begin parsing
2014:08:28-09:07:38: Dataskq USR1 signal: Currently processing: Tally::get_bandwidth_breakdown(..., 0) for detvl : done reading, begin parsing
2014:08:28-09:07:38: Dataskq USR1 signal: Currently processing: Tally::get_bandwidth_breakdown(..., 0) for detvl : done reading, begin parsing
2014:08:28-09:07:38: Dataskq USR1 signal: Currently processing: Tally::get_bandwidth_breakdown(..., 0) for detvl : done reading, begin parsing
2014:08:28-09:07:38: Dataskq USR1 signal: Currently processing: Tally::get_bandwidth_breakdown(..., 0) for detvl : done reading, begin parsing
2014:08:28-09:07:38: Dataskq USR1 signal: Currently processing: Tally::get_bandwidth_breakdown(..., 0) for detvl : done reading, begin parsing
2014:08:28-09:07:38: Dataskq USR1 signal: Currently processing: Tally::get_bandwidth_breakdown(..., 0) for detvl : done reading, begin parsing
2014:08:28-09:07:38: Dataskq USR1 signal: Currently processing: Tally::get_bandwidth_breakdown(..., 0) for detvl : done reading, begin parsing
2014:08:28-09:07:38: Dataskq USR1 signal: Currently processing: Tally::get_bandwidth_breakdown(..., 0) for detvl : done reading, begin parsing

Có lẽ mình đã tìm ra vấn đề, tiếp theo mình check size của “/usr/local/directadmin/data/users/detvl/bandwidth.tally”. với command sau.

du -sh /usr/local/directadmin/data/users/detvl/bandwidth.tally

mình thu được kết quả.

678M /usr/local/directadmin/data/users/detvl/bandwidth.tally

Nó quá lớn để khắc phục, mình kill toàn bộ dataskq process với lệnh sau.

killall -USR1 dataskq

Nếu không được bạn có thể chạy script

#!/bin/bash
PIDS=`ps aux | grep dataskq | awk 'print $2'`
for P in $PIDS
do
kill -9 $P
done

Tiếp theo truncate log data của file bandwidth.tally

echo "" > /usr/local/directadmin/data/users/detvl/bandwidth.tally

tiếp theo tạo cron làm chậm dataskq

# vi /etc/cron.d/directadmin_cron
# Replace with
* * * * * root nice -n 19 /usr/local/directadmin/dataskq

Các bạn có thể xem thêm bài viết khắc phục dataskq high load khi gặp lỗi Ticket::deliverMessage::Can’t read ./data/admin/tickets.list: Unable to get Lock on file

Cảm ơn các bạn đã đọc bài viết Nếu có thắc mắc các bạn có thể liên hệ với mình qua mail.