Tôi đã chạy máy chủ của mình với pm2 start ...
và pm2 monit
đang hiển thị cho tôi 3GB memory
sau 2 giờ. Vì vậy, tôi đính kèm memwatch, bây giờ tôi chờ đợi thêm 2 giờ và một lần nữa bộ nhớ được hiển thị bởi pm2 monit
đạt 3GB
.Node.JS rò rỉ bộ nhớ với PM2
Vì vậy, tôi đã kiểm tra bản ghi nhật ký được tạo. Chỉ cho tôi:
{ before: { nodes: 75659, size_bytes: 11141702, size: '10.63 mb' },
after: { nodes: 73226, size_bytes: 10840598, size: '10.34 mb' },
change:
{ size_bytes: -301104,
size: '-294.05 kb',
freed_nodes: 5141,
allocated_nodes: 2708,
Và khác:
{ before: { nodes: 72591, size_bytes: 10728318, size: '10.23 mb' },
after: { nodes: 73284, size_bytes: 10798062, size: '10.3 mb' },
change:
{ size_bytes: 69744,
size: '68.11 kb',
freed_nodes: 5931,
allocated_nodes: 6620,
Bây giờ tôi thực sự bối rối, đó là những bản ghi cuối cùng vì vậy tôi khá chắc chắn đó là những bản ghi được tạo ra khi pm2 monit
cho thấy sự rò rỉ bộ nhớ khổng lồ.
Vì vậy, tại sao là memwatch
hiển thị cho tôi 10MB+
bộ nhớ và pm2 monit hiển thị 3GB+
?
Bây giờ chuyển sang cái gì đó như forever
hoặc monit để xem nếu rò rỉ vẫn còn tồn tại.
Một chút hơn nền
- Tôi đã cố gắng để cấu hình và tìm chỗ rò rỉ và không chỉ là bất kỳ rò rỉ hiển thị trên hồ sơ.
- Sự khác biệt của đồng hồ bấm giờ được bắt đầu khi khách hàng kết nối và sự khác biệt được thực hiện khi khách hàng ngắt kết nối.
Về điều này, tôi đã cố gắng để hồ sơ nó trong 2 ngày qua và không thể tìm thấy vấn đề. Vì vậy, cuối cùng tôi đã quyết định chuyển sang Golang, điều này thật tuyệt vời, bộ nhớ lớn và sự khác biệt về hiệu suất. Rất hiệu quả. Cuối cùng không có rò rỉ khó hiểu. Cộng với nó khá dễ dàng để mã hóa, mã hóa javascript để golang trong vòng chưa đầy một ngày. – majidarif