Apache sử dụng 100% CPU. Có thể chỉ huy lệnh ps ps cho tôi biết nó đang làm gì không?


8

Tôi có một máy chủ SLES 10 Linux và đôi khi nó được tối đa hóa bởi CPU tới 100% CPU.

Với ps axtôi có thể thấy, đó Apache đã sinh ra ~ 50 process của Apache.

Ví dụ, pslệnh có thể cho tôi biết mỗi quy trình Apache này đang làm gì không?

Hoặc có lẽ một số phương pháp khác để tôi có thể xem những trang web nào gây ra vấn đề?

Câu trả lời:


14

Tệp /etc/httpd/conf/httpd.conf của tôi có phần này:

# Allow server status reports generated by mod_status,
# with the URL of http://servername/server-status
# Change the ".example.com" to match your domain to enable.
#
<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from .example.com
    Allow from 127. 192.168.1.
</Location>

Do đó, nếu tôi truy cập http://192.168.1.1/server-status , tôi nhận được một trang cho tôi biết:

  1. phiên bản máy chủ
  2. thời gian hoạt động của httpd
  3. sử dụng CPU hiện tại
  4. yêu cầu đang được xử lý và # của công nhân nhàn rỗi

  5. một mạng lưới những gì mỗi quá trình đang làm
  6. yêu cầu gần đây

    Trạng thái máy chủ Apache cho 192.168.3.1

    Phiên bản máy chủ: Apache / 2.2.3 (Mũ đỏ)
    Máy chủ được xây dựng: 14 tháng 7 năm 2009 06:04:04

    Thời gian hiện tại: Thứ bảy, 17-tháng 7 năm 2010 10:20:31
    Thời gian khởi động lại CDT : Thứ bảy, 17-tháng 7 năm 2010 10:13:12
    Tạo máy chủ mẹ CDT : 0 Thời
    gian hoạt động của máy chủ: 7 phút 19 giây
    Tổng số lượt truy cập: 51 - Tổng số Lưu lượng truy cập: 156 kB
    CPU Sử dụng: u0 s0 cu0 cs0
    .116 yêu cầu / giây - 363 B / giây - 3132 B / yêu cầu
    1 yêu cầu hiện đang được xử lý, 7 công nhân nhàn rỗi

    __W _____................................................. .......
    ........................................... .....................
    ............................. ...................................
    ............... .................................................

    Khóa bảng điểm:
    "_" Đang chờ kết nối, "S" Bắt đầu, "R" Yêu cầu đọc,
    "W" Gửi trả lời, "K" Keepalive (đọc), "D" Tra cứu DNS,
    "C" Đóng kết nối, "L "Ghi nhật ký," G "Hoàn thiện một cách duyên dáng,
    " Tôi "dọn dẹp công nhân nhàn rỗi,". " Khe mở không có quy trình hiện tại

    Srv PID Acc M CPU SS Req Conn Child Slot Client Vhost Yêu cầu
    0-0 20715 0/2/2 _ 0.00 418 0 0.0 0.01 0.01 192.168.3.97 dit GET / trạng thái máy chủ HTTP / 1.1
    1-0 20716 0/49/49 _ 0,00 128 0 0,0 0,15 0,15 192.168.3.97 dit GET / trạng thái máy chủ HTTP / 1.1
    2-0 20717 0/0/0 W 0,00 0 520222374 0,0 0,00 0,00 192.168.3.97 dit GET / trạng thái máy chủ HTTP / 1.1


Bạn có thể cần phải thiết lập ExtendedStatus ONđể xem từng yêu cầu
TonyUser

3

stracecó thể cho bạn biết một quy trình cụ thể đang thực hiện ở cấp độ các cuộc gọi hệ thống, nhưng nó sẽ không cung cấp cho bạn "chế độ xem 50 feet" về những gì đang xảy ra. Bạn sẽ cần phải ghép các hệ thống gọi nó bằng cách sử dụng để tìm ra điều đó.


2

Nếu bạn có một trang web với phần cuối cơ sở dữ liệu thì bạn có thể xem trong DBMS những lệnh nào hiện đang chạy. Có lẽ điều này có thể giúp bạn thu hẹp nơi mã của trang web được tải.

Khác, bạn có thể tăng mức độ nhật ký của daemon httpd. Sau đó, bạn có thêm thông tin trong các bản ghi.


1

Ngoài ra còn có ltrace, hoạt động như strace nhưng với các cuộc gọi thư viện.


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.