2011-04-14 29 views
8

Vì nút cơ bản là một quá trình đơn lẻ, khi có điều gì đó không ổn định, toàn bộ ứng dụng sẽ chết.Khi node.js bị hỏng, làm cách nào để tôi có thể tự động sao lưu node.j?

Tôi hiện có một vài ứng dụng được xây dựng trên tốc độ cao và tôi đang sử dụng một số phương pháp thủ công để ngăn thời gian ngừng hoạt động mở rộng (process.on ('uncaughtException') và trình theo dõi nhịp tim tùy chỉnh).

Mọi đề xuất từ ​​cộng đồng? Thực tiễn tốt nhất? Khung?

Cảm ơn! Một

Trả lời

5

Sử dụng một cái gì đó giống như forever

hoặc sử dụng supervisor.

Chỉ cần npm link và sau đó sudo supervisor server.js.

Các loại thư viện này cũng hỗ trợ tải lại nóng. Có một số bạn sử dụng từ dòng lệnh và chúng chạy các dịch vụ nút như các tiến trình con cho bạn. Có những người khác hy vọng bạn viết mã của bạn để tải lại chính nó.

Lý tưởng nhất là những gì bạn muốn di chuyển về phía bộ cân bằng tải hoàn toàn không an toàn. Nếu một nút bấm duy nhất trong bộ cân bằng tải của bạn bị treo, bạn muốn nó được khởi động lại lặng lẽ và tất cả các kết nối và dữ liệu được cứu.

Cá nhân tôi muốn giới thiệu supervisor để phát triển (Nó được viết bởi isaacs!) Và bộ cân bằng tải đầy đủ (hoặc nginx hoặc nút) cho máy chủ sản xuất thực của bạn.

Dĩ nhiên đã chạy nhiều máy chủ xử lý nút của bạn song song bởi vì bạn quan tâm đến nhân rộng trên nhiều lõi đúng;)

3

Sử dụng forever.

"Một công cụ CLI đơn giản để đảm bảo rằng một kịch bản được chạy liên tục (tức là mãi mãi)"

Chỉ cần cài đặt nó với NPM

npm install forever 

và gõ

forever start app.js 
1

tôi sẽ cũng khuyên bạn nên forever.Tôi sử dụng nó ngày hôm qua và một làn gió của nó:

  1. Install npm install forever

  2. Bắt đầu ứng dụng của bạn forever start myapp.js

  3. Kiểm tra nếu làm việc của nó forever list

Cố gắng giết ứng dụng của bạn:

  1. ps

  2. Nhận myapp.js pid của bạn và chạy kill <pid

  3. chạy forever list và bạn sẽ thấy nó chạy lại

0

Bạn có thể thử sử dụng Fugue, thư viện cho node.js tương tự Spark hoặc Unicorn:

https://github.com/pgte/fugueFugue có thể quản lý bất kỳ loại máy chủ node.js nào, không chỉ máy chủ web, và nó được thiết lập và cấu hình dưới dạng tập lệnh node.js, không phải lệnh CLI, do đó, việc xây dựng các công cụ triển khainode.js bình thường có thể sử dụng nó.

2

Nếu bạn đang sử dụng Ubuntu, bạn có thể sử dụng upstart (được cài đặt theo mặc định).

$ cat /etc/init/my_app.conf

mô tả "my_app" tác giả "tôi"

đầu vào (cục bộ hệ thống tập tin và iface net-thiết bị-up = eth0) dừng lại trên shutdown

respawn

exec sh -c "env NODE_ENV = /path/myapp/app.js nút sản xuất >> /var/log/node.log 2> & 1"

"respawn" có nghĩa là ứng dụng sẽ được khởi động lại nếu nó chết.

Để khởi động ứng dụng

bắt đầu my_app

Đối với các lệnh khác

người initctl

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