Lỗi khởi động lại Apache


0

Máy chủ của tôi có tải cao và tôi đã dừng Apache2 cho đến khi tải được rút xuống bằng cách sử dụng killall -9 apache2. Khi bắt đầu Apache2, tôi đã gặp lỗi:

* # /etc/init.d/apache2 khởi động lại  * Khởi động lại máy chủ web apache2 httpd (pid 4457?) Không chạy (98) Địa chỉ đã được sử dụng: make_sock: không thể liên kết với địa chỉ 0.0.0.0:80 không có ổ cắm nghe có sẵn, tắt Không thể mở nhật ký *

Tôi sau đó lsof | grep "* .www" và giết tiến trình bằng cổng 80.

Câu hỏi của tôi là làm thế nào một quá trình vẫn có thể sử dụng cổng 80 ngay cả sau khi tôi thực hiện lệnh kill all?


1
Sử dụng 'kill -9` thay vì service httpd stop (hoặc tương đương) giống như việc thu dọn ngôi nhà của bạn khỏi quỹ đạo để tắt đèn bàn.
RedGrittyBrick

Dưới tải trọng cao, phải mất rất nhiều thời gian để thực hiện quá trình tắt duyên dáng của quy trình Apache. Vì vậy, bạn đang nói sử dụng lệnh kill là một vấn đề của riêng mình?
Paddington

Có sử dụng killall -9 … có thể tạo ra vấn đề kill -9 (SIGKILL) là cách cực đoan nhất để dừng quá trình và là biện pháp cuối cùng, có những tín hiệu khác (SIGINT, SIGQUIT, v.v.) bạn có thể gửi để tạo cơ hội cho quá trình dọn dẹp và giải phóng bất kỳ tài nguyên nào nó đã bị khóa hoặc phân bổ. Thứ hai, có lẽ bạn chỉ cần dừng một quy trình đang lắng nghe trên cổng 80, để ngăn các yêu cầu tiếp theo được chấp nhận, bạn không cần phải giết tất cả các quy trình công nhân khác.
RedGrittyBrick

Câu trả lời:


0

http://httpd.apache.org/docs/2.2/stopping.html

Để dừng hoặc khởi động lại Apache, bạn phải gửi tín hiệu đến các quy trình httpd đang chạy. Có hai cách để gửi tín hiệu. Đầu tiên, bạn có thể sử dụng lệnh unix kill để gửi tín hiệu trực tiếp đến các tiến trình. Bạn sẽ nhận thấy nhiều tệp thực thi httpd đang chạy trên hệ thống của mình, nhưng bạn không nên gửi tín hiệu cho bất kỳ ai trong số họ ngoại trừ phụ huynh , có pid trong PidFile. Điều đó có nghĩa là bạn không cần phải gửi tín hiệu cho bất kỳ quy trình nào ngoại trừ phụ huynh. Có bốn tín hiệu mà bạn có thể gửi cho cha mẹ: TERM, USR1, HUP và WINCH, sẽ được mô tả trong giây lát.

Để gửi tín hiệu cho cha mẹ, bạn nên ra lệnh như:

  kill -TERM `cat /usr/local/apache2/logs/httpd.pid`

Tôi nhấn mạnh.

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.