Xin chỉ giáo: Giới hạn connect của Node và socket.io



  • Mình đang gặp một vấn đề khá nghiêm trọng cho ứng dụng, rất mong mọi người chỉ giáo.
    Ứng dụng nodejs sử dụng socket.io, mình sử dụng tool tạo client connect đến server và socket.io, nhưng đến khoảng hơn 400 client thì server chết.
    Vậy nguyên nhân là do server của nodejs hay là giới hạn của socket.io ?
    Liệu có cách nào khắc phục không?
    Xin chân thành cảm ơn.



  • @Acenter-Ha Bạn có dùng chung với proxy nào ko ?

    Nguyen (Rodgers) Hien.
    Sent from Wood-PC.

    0


  • @Nguyen-Hien là sao? nếu chung với proxy là sao? bạn giải thích rõ hơn



  • Socket.io của thằng js khá bựa. Theo như nhớ là socket built in http. Ông connect theo doc là http đúng ko =)). Dùng chung với proxy thì phải config để nó upgrade và keep nó. Còn ko nó cứ ping hoài. Ko biết có phải trường hợp bác bị ko

    Nguyen (Rodgers) Hien.
    Sent from Wood-PC.

    0


  • Cảm ơn mọi người, mình điều tra ra được rồi, nguyên nhân không nằm ở Socket.io hay nodejs mà do Nginx.
    Cách fix là sửa nội dung config trong file config của Nginx các key: [worker_connections, worker_rlimit_nofile] thành giá trị lớn hơn nhưng phù hợp với cấu hình server là ok.



  • @Acenter-Ha Bạn có thể share cho mọi người với. Vì mọi người chọn Nodejs một phần là vì realtime của nó khá dễ hơn cái khác. Hehe. Mình cũng muốn tìm hiểu thêm

    Nguyen (Rodgers) Hien.
    Sent from Wood-PC.

    0


  • @Nguyen-Hien
    Dự án mình đang làm là của khách hàng nên không thể share source được bạn nhé, bạn thông cảm.

    Thông tin chính vấn đề mình gặp:
    Dự án sử dụng nodejs (express, socket, ejs) bình thường, không xài các generator nào cả.
    Node được đặt trong Nginx theo yêu cầu của K/H, vì họ muốn sử dụng Nginx để quản lý.
    Vấn đề phát sinh khi mình dùng Phantomjs để test performance cho ứng dụng.

    Hiện tượng thì mình đã nêu ở #1 rồi bạn nhé.
    Nguyên nhân nằm ở Nginx, Nodejs và socket.io có thể nhận số lượng connections cực lớn. Mình nhớ không lầm thì là 65k và 10k thì phải.



  • @Acenter-Ha Oke. Thanks =)))

    Nguyen (Rodgers) Hien.
    Sent from Wood-PC.

    0


  • @Nguyen-Hien limited của socket.io liên quan đến proxy?
    mặc định máy chủ server nó cũng giới hạn resource thường là 1024 với connection. Phải dùng ulimit để tăng giới hạn tài nguyên hoặc chỉnh sửa trong sysctl.conf để giới hạn từng thứ cụ thể hơn. Với ngnix có thể tăng worker và tạo thêm upstream nhưng vẫn phải tăng giới hạn tài nguyên ở máy chủ.


Log in to reply