Over 16,537,689 people are on fubar.
What are you waiting for?

Nếu bạn là người đang quản trị server riêng chắc hẳn sẽ đặt ra câu hỏi “làm gì khi web server bị treo?” trong tình huống mà bạn thường gặp phải. Bài viết này tôi khái quát kinh nghiệm quản lý server của tôi hi vọng sẽ giúp được các bạn khi mắc phải sự cố tương tự.

lam-gi-khi-web-server-bi-treo

Khi một web server bị treo điều đầu tiên bạn cần phải làm là login ngay vào control panel và SSH. Vấn đề cấp thiết nhất là vào được của sổ SSH, trong trường hợp vào control panel không được và cả ssh cũng không được thì chỉ có cách khởi động lại server và chconfig httpd off cho dịch web không tự động run khi power on.

1. Bước 1

Sau khi vào được của sổ SSH điều đầu tiên là kiểm tra xem tiến trình gì đang chiếm tài nguyên hệ thống một cách đột biến, ta dùng lệnh:

# top

Nếu một lệnh nào đó đang chiếm giữ tài nguyên cao thì lập tức kill lệnh đó ngày bằng lệnh:

# kill  1234

trong đó 1234 là ID của process mà ta muốn kill.

2. Bước 2

Nếu không có tiến trình nào đang chiếm giữ tài nguyên đột biến có nghĩa là việc kill một process nào đó trở lên không ăn thua thì ta restart lại 2 dịch vụ web và mysql

#service httpd stop

#service mysqld restart

#service httpd start

Nhớ là đánh lệnh đúng theo trình tự và phải stop httpd trước sau đó restart mysql server sau đó start lại httpd server, việc làm này hết sức cần thiết khi server bạn đang bị treo tức là Mysql server đang làm việc hết công suất nếu bạn chưa stop httpd để ngắt các kết nối CSDL thì việc restart Mysql sẽ làm crash dữ liệu việc ngày rất là nguy hiểm.

Sau khi restart 2 dịch vụ httpd và mysqld xong ta ngồi chờ xem tình hình có khả thi hay không. Nếu không mấy khả thi thì ta tiến hành qua bước tiếp theo.

>>> Xem thêm: Giải phóng không gian ổ cứng với dịch vụ lưu trữ đám mây

3. Bước 3

Bước tiếp theo ta kiểm tra xem có IP nào đó đang cố gắng tạo nhiều kết nối để làm chậm server mình hay không bằng lệnh:

#netstat -anp | grep ‘tcp |udp’ | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n

Xem IP nào đang kết nối nhiều nhất, thông thường với hệ thống  nhỏ thì 100 kết nối được xem là đột biết còn với server lớn thì  khoảng 300 kết nối. Nếu server của bạn là VPS thì khoảng gần 100 kết nối là được xem là nhiều. Giả sử tôi thấy được IP 74.125.128.94 đang chiếm giữ nhiều kết nối thì nhiệm vụ trước mắt là chặn IP này lại bằng lệnh:

#iptables -I INPUT -s 74.125.128.94 -j DROP

#service iptables save

4. Bước 4

Sau đó vào lại web xem có tiến triển gì không, thông thường thì 60% sự cố tôi làm đến đây là xem như là giải quyết được trước mắt. Nếu không có khả thi gì thì tiếp tục chuyển sang giai đoạn kết tiếp.

Bước tiếp theo nếu việc kiểm tra các kết nốin httpd thấy bình thường mà server của bạn vẫn còn tình trạng ì ạch thì việc kết tiếp là kiểm tra Mysql server.

Đầu tiên đăng nhập vào command của Mysql với tài khoản root:

#mysql -uroot -p

#<<enter passwd root>>

Sau khi đăng nhập vào của sổ mysql command, như theo thường lệ kiểm tra các query đang chạy bằng lệnh

#show full processlist;

nhớ là có dấu “;” phía sau nhé. Thông thường thì kết quả trả về có dạng như sau:

ID      Username   Client host            Database     Mode          Connected            Running query

ta quan tâm đến các cột Username, Mod, và Connected:

Nếu kết quả trả về có quá nhiều run query mà đại đa số là các query đang ở trạng thái  ”Sleep” việc này có nghĩa là Mysql đang quá tải và việc quá tải này là do hiện tượng thắt cổ chai gây nên.Có nghĩa là ổ cứng của bạn đang phải làm việc đến mức tối đa để đáp ứng cho các sử lý Mysql Server.

Nếu kết quả trả về đại đa số các query mà có cột Connected  tức là thời gian kết nối tương đối lâu thông thường là vài giây trở lên, thì lý do gây ra tắc nghẽn server chính là các query đó gây lên. Lúc này bạn có 2 việc phải làm là tối ưu lại các query đó và kill các query bằng lệnh:

# kill 1234

trong đó 1234 chính là ID của query bạn muốn kill.

Lưu ý là việc phải kill một số query đang bị treo là việc hết sức hạn chế vì nó sẽ gây ra việc crash database đặc biệc là các query update, insert, delete, order với dữ liệu lớn.

Trong trước hợp các query đang làm việc hết sức bình thường có nghĩa là chỉ có 2-3 dòng trả về và đang ở trang thái “Query” thì bạn cứ yên tâm là Mysql server của bạn đang hoạt đồng bình thường và điều bạn cần phải làm là đánh lệnh #exit; để thoát ra.

Trên đây là một số bước để xử lý sự cố khi web server của bạn bị quá tải, hy vọng sẽ giúp được ít nhiều đối với ai mới vào nghề.

Chúc các bạn thành công!

Nguồn: http://maychugiare.com/lam-gi-khi-web-server-bi-treo/

 

Leave a comment!
html comments NOT enabled!
NOTE: If you post content that is offensive, adult, or NSFW (Not Safe For Work), your account will be deleted.[?]

giphy icon
last post
9 years ago
posts
53
views
4,224
can view
everyone
can comment
everyone
atom/rss

other blogs by this author

official fubar blogs
 8 years ago
fubar news by babyjesus  
 13 years ago
fubar.com ideas! by babyjesus  
 10 years ago
fubar'd Official Wishli... by SCRAPPER  
 11 years ago
Word of Esix by esixfiddy  

discover blogs on fubar

blog.php' rendered in 0.0712 seconds on machine '110'.