2009-04-23 27 views
9

Máy chủ của tôi (ubuntu 8.04) LAMP chạy drupal 6, khi có lưu lượng truy cập cao, nó dừng phục vụ các trang. Khởi động lại apache2 sẽ không hoạt động, vì vậy tôi phải khởi động lại dịch vụ.Có gì trong Apache 2 là lỗi "SIGWINCH" bị bắt?

tôi thấy thông báo này trong apache2 error.log

[thông báo] bắt SIGWINCH, đóng xuống một cách duyên dáng

Ngoài ra tôi nhận thấy rằng quá trình id của apache2, là khoảng 12000 khi apache ngừng đáp ứng.

Cập nhật

SIGWINCH bị bắt, như bạn chỉ ra, là thông báo khởi động lại dịch vụ apache. Tôi chơi xung quanh với các khách hàng tối đa và tiếp tục sống. Tôi đặt MaxClients quá thấp nên tôi nhận được "máy chủ đã đạt đến thiết lập MaxClients, cân nhắc việc nâng cao cài đặt MaxClients", nhưng đã sửa lỗi đó.

Về PID, cài đặt của tôi đã cài đặt prefork module, vì vậy sau khi đạt được MaxRequestPerChild, nó sẽ tái chế quy trình con. Đó là lý do tại sao PID tăng lên định kỳ. Vẫn chưa tìm ra lý do tại sao sau một thời gian apache ngừng đáp ứng.

Trong thời gian trung bình sẽ cố gắng tăng MaxRequestPerChild để PID không đạt PID max nhanh như vậy. Giới hạn hiện tại là 32768 (tiêu chuẩn cho cài đặt debian và ubuntu mới).

Đây là nhiều hơn từ các bản ghi:

[Fri 24 Tháng 4 01:48:56 2009] [thông báo] bắt SIGWINCH, tắt duyên dáng

[Fri 24 Tháng Tư 1:50 : 07 2009] [thông báo] Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.3 với Suhosin-patch cấu hình - nối lại hoạt động bình thường

[Fri 24 tháng 4 17:13: 3 5 2009] [lỗi] [khách hàng 195.70.62.131] khách hàng gửi HTTP/1.1 yêu cầu mà không hostname (xem RFC2616 phần 14,23): /w00tw00t.at.ISC.SANS.DFind :)

[Fri Apr 24 17:36:00 2009] [lỗi] [client 212.188.33.4] khách hàng gửi HTTP/1.1 yêu cầu mà không hostname (xem RFC2616 phần 14,23): /w00tw00t.at.ISC.SANS.DFind :)

[Sat Apr 25 20:05:07 2009] [error] [client 84.243.222.12] URI không hợp lệ trong yêu cầu GET HTTP/1.1 HTTP/1.1

[Sat 25 Tháng 4 20:05:12 2009] [lỗi] [khách hàng 84.243.222.12] kịch bản không tìm thấy hoặc không thể stat: /usr/lib/cgi-bin/TWiki

[ Thứ bảy 25 tháng 4 20:05:12 năm 2009] [lỗi] [khách hàng 84.243.222.12] kịch bản không tìm thấy hoặc không thể stat: /usr/lib/cgi-bin/wiki

[Sat 25 tháng 4 20:05:12 2009] [lỗi] [khách hàng 84.243.222.12] kịch bản không tìm thấy hoặc không thể stat: /usr/lib/cgi-bin/wiki

[Sat 25 tháng 4 21:46:46 2009] [lỗi] [khách hàng 211.68.23.167] URI không hợp lệ trong yêu cầu GET HTTP/1.1 HTTP/1.1

[Sun Apr 26 06:13:47 2009] [lỗi] [khách hàng 86.39.154.89] khách hàng đã gửi HTTP/1.1 yêu cầu mà không hostname (xem RFC2616 phần 14,23): /w00tw00t.at.ISC.SANS.DFind :)

[Sun 26 tháng 4 06:53:07 2009] [thông báo] Graceful restart yêu cầu , đang thực hiện khởi động lại

Trả lời

8

Vâng, SIGWINCH được sử dụng trong một số trường hợp khi khởi động và dừng Apache trên Ubuntu. Nếu tôi làm sudo apache2ctl graceful-stop trên máy chủ Ubuntu 8.10 của tôi, tôi có được điều này trong nhật ký của tôi:

[Fri Apr 24 22:41:15 2009] [notice] caught SIGWINCH, shutting down gracefully 

Như tôi nhớ nó, SIGWINCH cũng được sử dụng bởi một số dịch vụ mà cần phải khởi động lại Apache khi xoay bản ghi, công việc hàng đêm vv

Điều đó không giải thích được vấn đề bạn đang gặp phải, nhưng tôi nghĩ nó có thể là thứ khác đang chạy trên máy chủ đang khởi động lại Apache - hoặc nó có thể không liên quan đến vấn đề của bạn.

Cố gắng đăng nhiều logfile nếu bạn có thể, nó sẽ dễ dàng hơn rất nhiều để phân tích :)

+0

Vâng quyền của bạn trên sigwinch – Geries

+0

Vâng, không có gì trong bản ghi nhật ký đó để cho biết vấn đề thực sự là gì. Trạng thái bộ nhớ của bạn trông như thế nào khi sự cố xảy ra? cao, Apache sẽ ăn tất cả bộ nhớ có sẵn và đi vào bế tắc hoàn toàn.Ngoài ra, bạn đã kích hoạt mô-đun Apache nào? – mikl

+0

Tôi có bộ nhớ 1GB và có 600MB miễn phí khi sự cố xảy ra. Các mô đun được kích hoạt được viết lại, php5, mime và cgi. Có lẽ Apache không phải là vấn đề, tôi sẽ cố gắng cài đặt Debian một trang web di chuyển ở đó, đôi khi là "rẻ hơn" chỉ để bắt đầu với một tay áo sạch. Cảm ơn – Geries

13

uh? nếu tôi nhớ chính xác, SIGWINCH là một tín hiệu được gửi đến một ứng dụng đầu cuối khi kích thước của cửa sổ đầu cuối thay đổi (để ứng dụng có thể thay đổi kích cỡ chính nó). Thường được sử dụng bởi các ứng dụng ncurses.

Điều này rất lạ. Thông tin này có cung cấp cho bạn các gợi ý bổ sung không?

+0

Vâng 10 giây sau khi "[thông báo] bắt SIGWINCH, tắt một cách duyên dáng. Có một" [thông báo] Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.3 với cấu hình Suhosin-Patch được định cấu hình - Tiếp tục hoạt động bình thường " – Geries

+1

Điều này được thiết kế, xem https://bz.apache.org/bugzilla/show_bug.cgi?id=50669 –

+1

@ serv-inc Đúng, đó là một thiết kế khủng khiếp. –

4

On Apache, SIGWINCH là Graceful Stop tín hiệu. Lưu ý rằng điều này khác với SIGUSR1, là tín hiệu Graceful Restart.

Thật không may, chúng tôi cần thêm thông tin để cho bạn biết lý do tại sao Apache tạm dừng.

7

SIGWINCH

Như một vấn đề của thực tế, @Stefano là đúng: SIGWINCH nghĩa SIGNAL WINDOWS ĐỔI và được gửi tự động khi một thiết bị đầu cuối phát hiện một sự thay đổi trong đó là kích thước cửa sổ để cho phép một vẽ lại.

SIGWINCH cho apache2

Nhưng tiếc apache2 quá trình lạm dụng kém tín hiệu này (theo cách họ chuyển hướng ý nghĩa đầu tiên của mình), nhưng đối với quốc phòng của họ, họ không dường như có một sự lựa chọn và đã phải nhờ đến này do thiếu tín hiệu (xem bug report). Một trong những giả thiết của họ là quy trình apache2 luôn ở chế độ nền. Vì vậy, @mikl cũng hoàn toàn đúng.

Vì vậy, những gì cần kiểm tra?

  • bất kỳ lý do tự động khởi động lại một cách duyên dáng apache2 (dịch vụ cron, apt-get cài đặt các dịch vụ liên quan ...)
  • khác, bạn có chạy apache2 trong foreground trong một tty mở? Nếu có, điều này không được khuyến khích (than ôi), và bạn có thể dễ dàng nhấn SIGWINCH này một cách dễ dàng tắt máy khá dễ dàng khi thay đổi kích thước thiết bị đầu cuối điều khiển của bạn.
+1

cảm ơn những người có thể nghĩ rằng thay đổi kích thước một cửa sổ thiết bị đầu cuối có thể có những hậu quả không lường trước như vậy! –

Các vấn đề liên quan