2016-02-02 14 views
6

Tôi đang làm việc trong ứng dụng giao dịch thời gian thực bằng cách sử dụng Node.js (v0.12.4) và Socket.io (1.3.2). Trong đó, tôi đang đối mặt với một số thời gian trễ gần (100ms) khi đáp ứng phát ra từ Node.js đến GUI (Socket.Io).Node.js để Socket.io Thời gian trễ

Tôi không có một đầu mối tại sao thời gian trễ có khi phát dữ liệu từ Node.js sang GUI (Socket.IO).

Điều này xảy ra trong trang web sản xuất. Và chúng tôi đã cố gắng gỡ lỗi điều này trong vị trí máy chủ sản xuất cũng vì độ trễ mạng. Nhưng cùng một kết quả.

Xin vui lòng bất kỳ ai giúp tôi về điều này?

+0

Trình duyệt nào bạn sử dụng (giả sử khách hàng là trình duyệt web). Cấu hình máy chủ của bạn là gì? Bạn đã thử gì để gỡ lỗi? –

+0

Hãy xem [debug.io debug] (http://socket.io/docs/logging-and-debugging/#) –

+0

Chúng tôi đã thử Chrome và Firefox. Cả hai trình duyệt chúng tôi đang phải đối mặt với sự chậm trễ thời gian. Chúng tôi đã thêm dấu thời gian trước khi phát ra dữ liệu từ Node và sau khi nhận dữ liệu từ GUI (socket.io). Sự chênh lệch thời gian là hơn 100 ms – MadTech

Trả lời

5

Một điều quan trọng cần lưu ý trước khi thực hiện như sau. Khi tính thời gian từ phía sau (phía máy chủ) sang giao diện người dùng (phía máy khách), bạn cần chạy trên cùng một máy tính sử dụng cùng một tinh thể thời gian .

thời gian điều khiển bằng tinh thể thạch anh ngay cả trên bo mạch chủ chất lượng cao deffer từ nhau.

Nếu bạn tìm thấy không chậm trễ khi tính thời gian trễ từ back-end (server side) để kết thúc trước (client side) trên cùng một máy tínhthì thời gian trễ bạn ban đầu tìm thấy là do bởi một trong hai kết nối mạng hoặc trong các tinh thể thời gian của bo mạch chủ. Điều này sẽ loại bỏ Node.js và Socket.io là nguyên nhân của sự chậm trễ thời gian.

Về cơ bản, bạn cần phải tìm hiểu xem sự chậm trễ xảy ra trước khi bạn có thể giải quyết vấn đề.

Những gì bạn cần làm là tìm hiểu nguyên nhân gây ra hiệu suất lớn nhất hit trong dự án của bạn. Để làm điều này, bạn cần phải cô lập thời gian mỗi quá trình mất. Bạn cũng cần phải đo thời gian trễ từ lần truy xuất dữ liệu ban đầu cho đến khi phát hành dữ liệu. Sau đó đo độ trễ thời gian của từng chức năng, phương pháp và quy trình. Cố gắng cô lập vấn đề. Bạn cần phải hỏi những gì đang dành nhiều thời gian nhất để làm gì?

Để tìm hiểu xem hiệu suất của bạn đến từ đâu, bạn cần làm như sau.

  1. Tìm hiểu bao lâu cần cho mã của bạn để lấy thông tin nó cần.
  2. Tìm hiểu bao lâu mỗi quá trình thao tác thông tin mất trước khi nó sẽ gửi ra các dữ liệu tức là chức năng/phương pháp ...
  3. Sau khi thông tin được gửi ra tìm phải mất bao lâu để có được những thông tin cho khách hàng bên và tải.
  4. Thêm tất cả các lần lên và đảm bảo nó bằng với độ trễ hiệu suất của bạn để đảm bảo bạn có tất cả dữ liệu bạn cần để cô lập rò rỉ hiệu suất.
  5. Đặt hàng mọi phương thức, chức năng, quy trình… do thời gian trễ của nó tốn nhiều thời gian nhất để tốn ít thời gian nhất.Khi bạn tìm thấy những gì quá trình đang gây ra sự chậm trễ lớn nhất sau đó bạn sẽ có thể khắc phục vấn đề ... Hoặc ít nhất khám phá giải pháp hữu hình ...

Dưới đây là một số công cụ bạn có thể sử dụng để đo lường hiệu quả hoạt động suốt ma cua ban.

Trước tiên: Chrome có công cụ thực sự tốt cho phép bạn xem hiệu suất của từng đoạn mã được thực thi.

Thứ hai:performance-now node package. You can use it for dev performance testing.

Thứ ba:Stack overflow post on measuring time/performance in js.

Thứ tư: bạn có thể sử dụng những thứ như console.time()

0

Tôi đã phát hiện ra rằng sự chậm trễ thời gian, nơi nó đang xảy ra.

Một khi, tôi đã phát ra dữ liệu từ Ổ cắm máy khách đến Nút, tôi sẽ hiển thị một số thông báo cảnh báo ("Dữ liệu đã xử lý"). Thông điệp cảnh báo cần thời gian để hiển thị trong GUI.

Thông báo cảnh báo này chặn dữ liệu phản hồi từ Nút sang Ổ cắm.

Cảm ơn sự giúp đỡ của bạn Guys.

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