Chúng tôi đang nhìn thấy một số hành vi lạ và chúng tôi không chắc liệu đó có phải là vấn đề với apache, php, mysql hay OS hay không, do đó, với bộ não lớn của stackoverflow!Quy trình Apache/PHP treo trong khi tương tác với MySQL
Chúng tôi có Apache và mod_php nói chuyện với máy chủ mysql5. Đôi khi, một quá trình sẽ chọn treo, cố gắng đọc từ một bộ mô tả tập tin.
đánh lửa strace một ngày của họ (tất cả các quá trình treo cho thấy kết quả tương tự) đã cho điều này:
[[email protected] ~]# strace -p 8450
Process 8450 attached - interrupt to quit
read(57, <unfinished ...>
Vì vậy, những gì đã được nó cố gắng để đọc?
[[email protected] ~]# lsof -p 8450
...
...
httpd 8450 apache 57u IPv4 5546599 TCP
prweb133v.local:36615->hadat.local:mysql (ESTABLISHED)
Đó là máy chủ mysql của chúng tôi! Ok, vì vậy có lẽ nó đã cố gắng để đọc kết quả của một truy vấn, tôi nghĩ. Kiểm tra danh sách tiến trình trên máy chủ mysql, kết nối đã được thiết lập nhưng ở trạng thái SLEEP.
Hmmmm.
Vì vậy, sau đó tôi đã kiểm tra netstat để xem ai đang cố gửi/nhận nội dung gì.
Trên webserver:
[[email protected] ~]# netstat -t -n -a | grep 36615
tcp 0 5 172.23.179.6:36615 172.23.179.67:3306
ESTABLISHED
và trên máy chủ mysql đã có một kết nối được thiết lập nhưng 0 trong gửi hoặc nhận hàng đợi.
Bất kỳ ý tưởng nào về 5 byte bí ẩn này có thể là gì hoặc tại sao chúng ngẫu nhiên không nhận được máy chủ mysql?
Chúc mừng!
Mike
Bạn có thể tự kết nối và truy vấn cơ sở dữ liệu và/hoặc từ các ứng dụng khác không? – jdizzle
Bạn có chắc chắn rằng điều này xảy ra ngẫu nhiên và không liên quan đến một tập lệnh cụ thể? –
Tôi là đồng nghiệp của Mike; khi ở trạng thái lỗi này, bạn có thể mở một trình duyệt mới hơn (nhận một phiên PHP mới) và sử dụng trang web như thể không có gì xảy ra, do đó, DB vẫn OK. Nó có thể được gắn với một kịch bản được bao gồm trên tất cả các trang, nhưng nó (cho đến nay) ngẫu nhiên như những gì trang bạn xem gây ra lỗi. – crb