Sau đây mình xin hướng dẫn các bạn cách khắc phục dataskq load 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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
1 | lsof -p 11477 |
sau đó có thể dùng lệnh này để xem log
1 | tail -n 10 /var/log/directadmin/errortaskq.log |
Nó quá lớn để khắc phục, mình kill toàn bộ dataskq process với lệnh sau.
1 | killall -USR1 dataskq |
Nếu không được bạn có thể tạo ra file script để chạy, mình thấy cách này là hay nhất.
1 2 3 4 5 6 | #!/bin/bash PIDS=`ps aux | grep dataskq | awk '{print $2}'` for P in $PIDS do kill -9 $P done |
tiếp theo tạo cron làm chậm dataskq
sau đó lưu lại và restart lại cron là ok