Tần suất khởi động lại của Apache và MySQL (đặc biệt là có 150 nghìn lượt truy cập / tuần) và lợi ích thực sự trong việc khởi động lại mỗi lần nhất định là gì?
Tần suất khởi động lại của Apache và MySQL (đặc biệt là có 150 nghìn lượt truy cập / tuần) và lợi ích thực sự trong việc khởi động lại mỗi lần nhất định là gì?
Câu trả lời:
Bản thân Apache và MySQL không bị rò rỉ bộ nhớ. Hầu hết các máy chủ cơ sở dữ liệu chạy tốt hơn trong thời gian dài hơn. Tuy nhiên, các mô-đun được biên dịch thành Apache như PHP thường bị rò rỉ bộ nhớ.
Các mô-đun MPM Apache tự động tái chế các quá trình sau khi 10.000 yêu cầu. Bạn có thể thay đổi MaxRequestsPerChild
thành một cái gì đó khác nhau, nhưng 10.000 là một mặc định hợp lý.
Apache không cần khởi động lại thường xuyên; MySQL cũng không nên.
Apache chạy trong chế độ prefork có thể tái chế các tiến trình con của nó bằng MaxRequestsPerChild; đây là một điều tốt vì nó bảo vệ chống rò rỉ bộ nhớ chậm, v.v.
MySQL không nên được khởi động lại thường xuyên, vì khởi động lại nó sẽ gây ra sự cố ngừng dịch vụ. Khởi động lại MySQL cần đợi các công cụ khởi động và cũng sẽ xóa bộ nhớ cache khiến hiệu năng bị giảm cho đến khi nó nóng lên. Chúng tôi dường như thấy rằng nó cần phải khởi động lại theo thời gian [1] vì sự phân mảnh không gian địa chỉ, nhưng điều này không nên xảy ra quá nhiều trên hệ thống 64 bit, mà việc cài đặt mới luôn phải tiếp tục.
[1] ví dụ: cứ sau 9 tháng trên một máy chủ bận rộn với trung bình> 100 truy vấn mỗi giây
Bạn nên tránh khởi động lại MySQL bất cứ khi nào có thể vì lý do hiệu suất. MySQL sử dụng nhiều bộ nhớ để lưu trữ các trang và chỉ mục dữ liệu. Khi bạn khởi động lại MySQL, tất cả các trang được lưu trong bộ nhớ cache sẽ được giải phóng và bạn cần một chút thời gian để làm nóng bộ đệm. Trên các trang web tải dữ liệu cao khởi động lại có thể gây ra vấn đề hiệu suất.
Trang web của bạn không được tải nhiều (150 nghìn lượt truy cập / tuần chỉ cung cấp 1req / 4s), vì vậy, khởi động lại MySQL không gây ra vấn đề lớn.
Để hiểu khi nào một hệ thống hoặc dịch vụ cần được khởi động lại, trước tiên bạn cần hiểu lý do tại sao. Rò rỉ bộ nhớ là lý do phổ biến nhất nhưng có thể có những phần mềm khác, chẳng hạn như phần mềm được viết kém (tất cả đều quá phổ biến!) Không thực hiện vệ sinh nội bộ phù hợp, chẳng hạn như đóng xử lý tệp khi không còn cần thiết. Mặc dù không giống như rò rỉ bộ nhớ, các triệu chứng là như nhau. Cả Apache và MySQL đều được biết là rất ổn định (trừ khi bạn đang chạy phiên bản alpha hoặc beta) và có thể chạy trong nhiều năm mà không gặp vấn đề gì. Thông thường hệ điều hành sẽ cần khởi động lại để áp dụng các bản vá từ lâu trước khi một trong hai ứng dụng sẽ yêu cầu nó.