Tối ưu hóa prefork Apache - Chọn đúng giá trị `MaxRequestsPerChild`


9

Tôi đang cố gắng tối ưu hóa các máy chủ web của mình để xử lý càng nhiều kết nối càng tốt. Tôi đã đọc rất nhiều bài viết và các ghi chú của Apache. Tôi đang cố gắng hiểu giá trị nào tôi nên chọn MaxRequestsPerChild.

Lúc đầu, tôi đã thử đặt nó lên 4.000, nhưng máy chủ gặp khó khăn khi xử lý nhiều yêu cầu, vì vậy tôi đã bắt đầu nâng nó lên. Hiện tại, thiết lập của tôi là:

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  40000
</IfModule>

Sau khi đặt MaxRequestsPerChildthành 40.000, máy chủ quản lý để xử lý nhiều kết nối hơn trong khi không sử dụng thêm bộ nhớ / cpu.

Ai đó có thể cho tôi biết liệu giá trị này quá cao hay không sao nếu có giá trị cao như vậy?

Cảm ơn!

Thông tin hệ điều hành:

[root@web06 ~]# uname -a
Linux web 2.6.18-164.el5PAE #1 SMP Thu Sep 3 04:10:44 EDT 2009 i686 i686 i386 GNU/Linux
[root@web06 ~]# free
             total       used       free     shared    buffers     cached
Mem:       3814660    3502968     311692          0     144368    2970468
-/+ buffers/cache:     388132    3426528
Swap:      5210104          0    5210104

Câu trả lời:


10

MaxRequestsPerChildthực sự chỉ hữu ích để hạn chế lượng rò rỉ bộ nhớ theo thời gian khi chạy các tập lệnh động. Nếu bạn chỉ đang phục vụ nội dung tĩnh hoặc các tập lệnh rất nhỏ / đơn giản thì có lẽ bạn có thể đặt nó thành 0 hoặc rất cao mà không ảnh hưởng nhiều. Nếu bạn đang chạy các tập lệnh lớn hơn / phức tạp thì đặt 0 / cao sẽ dẫn đến các quy trình Apache của bạn tiêu tốn nhiều bộ nhớ hơn. Chính xác bao nhiêu tùy thuộc vào ứng dụng cụ thể của bạn.

Mặt khác, việc đặt nó ở mức rất thấp thực sự có thể dẫn đến việc sử dụng CPU nhiều hơn một chút vì các quy trình Apache liên tục được khởi động lại.

Tôi sẽ làm một bài kiểm tra đơn giản để xem các quy trình của bạn có thể sử dụng bao nhiêu bộ nhớ. Đặt MaxRequestsPerChildthành 0 và khởi động lại Apache. Kiểm tra tải một vài trang và xem kích thước ban đầu của các quy trình Apache đang sử dụng top. Kiểm tra lại sau vài giờ / ngày / tuần (tùy thuộc vào ứng dụng và lượt xem trang của bạn) và xem nó phát triển như thế nào. Nếu nó không tăng trưởng nhiều thì giá trị 0 hoặc rất lớn MaxRequestsPerChildsẽ ổn.

Nếu bạn có kích thước tối đa được đặt cho các quy trình Apache của mình (nghĩa là bạn muốn chúng có kích thước từ 50 MB trở xuống) thì bạn có thể thực hiện cùng một thử nghiệm với các giá trị khác nhau MaxRequestsPerChildcho đến khi bạn tìm thấy giá trị giữ cho Apache ít hơn giá trị đó.


1
Làm cách nào tôi có thể Kiểm tra tải các trang và xem kích thước của các quy trình Apache bằng Windows Server?
Ahmad Alfy 17/03/13
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.