2013-06-22 29 views
5

Khi hệ thống chạy ra khỏi bộ nhớ, ubuntu 12.04 giết chết quá trình mysql:Restart Mysql tự động khi ubuntu trên EC2 vi dụ giết nó khi chạy ra khỏi bộ nhớ

Out of memory: Kill process 17074 (mysqld) score 146 or sacrifice child 

Vì vậy, quá trình này kết thúc lên bị giết. Điều này xảy ra ở các mức cao nhất của tải trên máy chủ và chủ yếu là do apache bị hoang dã và ăn bộ nhớ còn lại còn lại. cách tiếp cận có thể là:

  • Thay đổi ở đâu đó bằng cách nào đó ưu tiên của mysql, vì vậy nó không giết (có thể là một sửa chữa xấu như cái gì khác sẽ bị giết)
  • Theo dõi tình trạng của mysql và tự động khởi động bất cứ khi nào nó chết (người mà tôi đang nghĩ đến, nhưng không biết làm thế nào để làm điều đó).

Bạn thấy nó như thế nào?

Trả lời

8

Việc chấm dứt đột ngột máy chủ cơ sở dữ liệu là một sự cố rất nghiêm trọng. Bạn cần phải tránh điều này trong một hệ thống sản xuất, bởi vì nó có thể không khởi động lại một cách rõ ràng.

Máy chủ cơ sở dữ liệu là tài nguyên được chia sẻ và hầu như không bao giờ chấm dứt trong thời trang không có kế hoạch trong sản xuất. Điều duy nhất nên gây ra chấm dứt không có kế hoạch là một phần cứng hoặc mất điện nghiêm trọng. Hầu hết các máy chủ cơ sở dữ liệu sản xuất được cấu hình đúng cách đều có chấm dứt không có kế hoạch sau 10 năm hoặc ít hơn. Nghiêm túc.

Việc cần làm?

Khắc phục cấu hình apache của bạn. Giới hạn số lượng các chủ đề và quy trình công nhân mà nó có thể sử dụng, vì vậy nó không thể chạy tự nhiên. Tìm hiểu cách thực hiện việc này. Nó rất quan trọng. Xem tại đây: http://httpd.apache.org/docs/current/mod/mpm_common.html#maxrequestworkers

Khắc phục các lỗi trong ứng dụng web của bạn đang khiến cho apache của bạn chạy tự nhiên.

Nếu bạn có thể, hãy di chuyển máy chủ mysqld của bạn sang máy chủ khác từ apache, vì vậy cả hai không tranh giành cho cùng một tài nguyên phần cứng.

Định cấu hình mysqld để giới hạn số lượng kết nối mà nó sẽ chấp nhận từ chuỗi công việc apache hoặc các ứng dụng khách khác. Ứng dụng web của bạn có thể xử lý tình huống mà một chuỗi công nhân cần chờ kết nối. Xem ở đây. http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_max_connections

Bạn đang sử dụng phiên bản EC2 micro? Bạn cần phải thực hiện một số điều chỉnh nghiêm túc. Xem ở đây: http://ubuntuforums.org/showthread.php?t=1979049

+4

Cảm ơn bạn Ollie! Có, bạn là đúng, tôi đang cố gắng để bóp một trường hợp vi EC2. Sau đó, tôi sẽ tiếp tục điều chỉnh apache và mysql và bắt đầu nhìn vào quy mô và quy mô xuống. Nhưng có cách nào để phát hiện ra rằng mysql đã đi xuống và khởi động lại nó tự động? Chỉ trong trường hợp nếu nó xảy ra bất cứ khi nào tôi không giám sát máy chủ và trong khi tôi đã không tối ưu hóa nó nhiều hơn. – Alex

3

Bạn có thể kiểm tra tình trạng mysql mỗi phút (với cron) và khởi động lại nếu nó được hỏng:

* * * * * service mysql status | grep running || service mysql restart 
+0

cảm ơn vì điều này. nó làm việc cho tôi. chỉ là/var/spool/mail/root trở nên lớn sau một thời gian do điều này. – sulabh