Giám sát viên luôn thoát quá trình với 'trạng thái thoát 0; Không được trông đợi'


13

Tôi hiện đang xây dựng lại vps của mình và tôi muốn sử dụng người giám sát để quản lý các quy trình django gunicorn / wsgi của tôi. Điều đó là, giám sát viên tiếp tục thoát khỏi các quy trình:

2010-07-23 14:54:40,575 INFO supervisord started with pid 31391
2010-07-23 14:54:41,582 INFO spawned: 'projectx' with pid 31395
2010-07-23 14:54:41,691 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:42,695 INFO spawned: 'projectx' with pid 31401
2010-07-23 14:54:42,801 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:44,806 INFO spawned: 'projectx' with pid 31404
2010-07-23 14:54:44,912 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:47,917 INFO spawned: 'projectx' with pid 31408
2010-07-23 14:54:48,022 INFO exited: projectx (exit status 0; not expected)
2010-07-23 14:54:49,023 INFO gave up: projectx entered FATAL state, too many start retries too quickly

Đây là cấu hình tôi đang sử dụng:

[program:projectx]
command=/path/to/project/bin/gunicorn_django -c /path/to/project/project/gunicorn.conf.py /path/to/project/project/production.py
user=myuser
autostart=true
autorestart=true

Tôi đã kiểm tra hai lần và gunicorn_django trả về trạng thái 0 khi nó sinh ra chính xác.

Tôi đã cố gắng thêm exitcodes = 0,2 vào cấu hình, nhưng điều đó dường như cũng không tạo ra sự khác biệt. Có vẻ như quá trình này được sinh ra một cách chính xác, nhưng người giám sát nghĩ rằng nó đã không xảy ra.

Có ai có manh mối về cách giải quyết điều này?

Cảm ơn, Bjorn

Câu trả lời:


12

Nếu gunicorn_django đang tự trang trí, thì đó không phải là loại giám sát chương trình được thiết kế để quản lý. Người giám sát hy vọng các chương trình được giám sát của nó sẽ chạy ở phía trước để nó có thể giám sát nếu chúng đã thoát.

Xem tài liệu giám sát .


gunicorn không tự hủy kích hoạt theo mặc định, nhưng tôi đã đặt nó trong tập tin cấu hình của mình. Tôi loại bỏ nó, cảm ơn vì đã chỉ ra điều đó.
Bjorn

4

Ok, sau một số khó hiểu tôi đã tìm ra nó có liên quan đến người dùng. Tôi đã cố gắng để chạy các quá trình con tôi như một người dùng nhất định. Sau khi loại bỏ dòng (xem cấu hình của tôi dưới đây), mọi thứ đều hoạt động tốt.

Cấu hình Gunicorn:

bind = "127.0.0.1:3305"
workers = 2

Giám sát cấu hình:

[program:projectx]
command=/path/to/project/bin/gunicorn_django -c /path/to/project/project/gunicorn.conf.py /path/to/project/project/production.py
; set the user here instead of in the gunicorn config.
user=user
autostart=true
autorestart=unexpected
stdout_logfile=/path/to/project/logs/project.log
redirect_stderr=true
exitcodes=1

1
Chỉ cần một lưu ý nhanh rằng nếu bạn muốn giải quyết vấn đề này, việc sử dụng myuser và gunicorn sẽ đưa ra gợi ý. Các nghi phạm thông thường là các tệp nhật ký và pid không thể ghi được. Ngoài ra, ứng dụng của bạn cũng có thể cần quyền truy cập tệp. Và chỉ cần lưu ý một chút rằng để hỗ trợ người giám sát tốt hơn, bạn nên nâng cấp lên 0.10 vì chúng tôi đã khắc phục sự cố với việc khởi động lại gunicorn thông qua giám sát viên (hoặc runit cho vấn đề đó).
Paul J. Davis

0

Tôi đã gặp một lỗi tương tự khi cố gắng thực thi một trình nền http dưới sự giám sát.

Đã sửa lỗi bằng cách xóa tệp pid cũ: httpd_pid

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.