Cách khắc phục độ trễ giữa 2 máy chủ linux


16

Độ trễ giữa 2 máy chủ linux là khoảng 0,23ms. Chúng được kết nối bằng một công tắc. Ping & Wireshark xác nhận số độ trễ. Nhưng, tôi không có bất kỳ tầm nhìn nào về những gì gây ra độ trễ này. Làm thế nào tôi có thể biết nếu độ trễ là do NIC trên máy chủ A hoặc B hoặc công tắc hoặc cáp?

CẬP NHẬT: Độ trễ .23 ms là không tốt cho ứng dụng hiện tại của tôi, nó gửi tin nhắn với tần suất rất cao và tôi đang cố gắng xem liệu nó có thể được đưa xuống .1ms không


2
Tại sao bạn nghĩ .23ms là độ trễ xấu? Đó là độ trễ tuyệt vời.
SpacemanSpiff

6
Kết nối chúng trực tiếp với một cáp chéo. Nếu bạn có cùng độ trễ thì nguyên nhân là một trong các máy chủ. Nếu bạn không có độ trễ tương tự thì nguyên nhân là do công tắc hoặc hệ thống cáp.
joeqwerty

1
Đồng ý, vấn đề là gì? Độ trễ 0,23ms ít hơn tôi nhận được với hai máy ngồi cạnh nhau.
Michael Hampton

@joeqwerty Nếu hai hệ thống được kết nối qua cáp chéo, làm thế nào để chúng xác định vị trí của nhau? ARP vẫn hoạt động chứ? TCP vẫn hoạt động chứ?
Jimm

1
Chúng sẽ hoạt động giống như thể cả hai được kết nối với cùng một công tắc. Cáp chỉ là phương tiện vật lý mà họ sẽ giao tiếp. Tất cả 7 lớp của mô hình OSI (hoặc 4 lớp của mô hình DARPA, nếu bạn thích) sẽ hoạt động chính xác như hiện tại.
joeqwerty

Câu trả lời:


15

Nhìn chung, bạn có thể sử dụng một số công tắc nâng cao cho tiện ích iperf để có được cái nhìn về hiệu suất mạng giữa các hệ thống, cụ thể là độ trễ và jitter ...

Đây có phải là luồng tin nhắn dựa trên UDP hoặc TCP không?

Tôi đã nhận xét ở trên về việc cần thêm thông tin về thiết lập của bạn. Nếu đây là một ứng dụng nhắn tin có độ trễ thấp, thì có cả một thế giới các kỹ thuật điều chỉnh và tối ưu hóa bao trùm phần cứng, trình điều khiển và hệ điều hành. Nhưng thực sự, chúng ta cần thêm thông tin.

Biên tập:

Được rồi, đây là tin nhắn TCP. Bạn đã sửa đổi bất kỳ /etc/sysctl.conftham số? Bộ đệm gửi / nhận của bạn trông như thế nào? Chỉ sử dụng hạt nhân thời gian thực sẽ không làm được gì nhiều, nhưng nếu bạn chuyển đến điểm mà bạn ràng buộc bị gián đoạn với CPU, việc thay đổi mức ưu tiên thời gian thực của ứng dụng nhắn tin ( chrt) và có thể sửa đổi tuned-admcấu hình của hệ thống có thể giúp ...

Đây có vẻ là một hệ thống EL6 chung, vì vậy một cách dễ dàng để thiết lập đường cơ sở điều chỉnh hiệu suất liên quan đến việc thay đổi cấu hình hiệu suất của hệ thống sang một hệ thống khác có sẵn trong khung điều chỉnh . Sau đó xây dựng từ đó.

Trong trường hợp của bạn:

yum install tuned tuned-utils
tuned-adm profile latency-performance

Một ma trận nhanh cho thấy sự khác biệt:

Bạn có thể cho chúng tôi biết về phần cứng? Các loại CPU, NIC, bộ nhớ?

Vì vậy, sẽ rất thú vị khi kiểm tra liên kết của bạn ... Hãy thử kiểm tra iperf này ...

Trên một hệ thống, bắt đầu một trình nghe UDP iperf. Mặt khác, mở một kết nối đến đầu tiên ... Một bài kiểm tra chất lượng đường nhanh.

# Server2
[root@server2 ~]# iperf -su   

# Server1
[root@server1 ~]# iperf -t 60 -u -c server2

Trong trường hợp của tôi, jitter thấp và thời gian ping thấp:

------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size:  224 KByte (default)
------------------------------------------------------------
[  3] local 192.168.15.3 port 5001 connected with 172.16.2.152 port 36312
[ ID] Interval       Transfer     Bandwidth        Jitter   Lost/Total Datagrams
[  3]  0.0-20.0 sec  2.50 MBytes  1.05 Mbits/sec   0.012 ms    0/ 1785 (0%)

PING server1 (172.16.2.152) 56(84) bytes of data.
64 bytes from server1 (172.16.2.152): icmp_seq=1 ttl=63 time=0.158 ms
64 bytes from server1 (172.16.2.152): icmp_seq=2 ttl=63 time=0.144 ms

Tôi sẽ kiểm tra lỗi phần cứng và giao diện. Nếu bạn muốn, loại bỏ việc chuyển đổi giữa các hệ thống và xem kết nối trực tiếp trông như thế nào. Bạn không muốn jitter cao (phương sai), vì vậy hãy kiểm tra xem.

Nhưng thành thật mà nói, ngay cả với thời gian ping bạn đang cài đặt hiện tại, điều đó cũng không đủ để giết ứng dụng của bạn. Tôi sẽ đi theo con đường điều chỉnh bộ đệm gửi / nhận của bạn. Xem: net.core.rmem_max, net.core.wmem_maxvà giá trị mặc định của họ ...

Một cái gì đó giống như sau đây /etc/sysctl.conf(vui lòng điều chỉnh để nếm thử):

net.core.rmem_default = 10000000
net.core.wmem_default = 10000000
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

Nó là một ứng dụng nhắn tin nhạy cảm độ trễ. HĐH thông thường sẽ là kernel-2.6.32-279.11.1.el6.x86_64, mặc dù tôi đã tải các máy chủ với kernel 3.2.23-rt37.56.el6rt.x86_64 để xem điều đó có khác biệt gì không. Nhưng nó khá giống nhau. Kích thước tin nhắn khác nhau trong khoảng 1KB- 3KB. Tất cả các giao tiếp xảy ra thông qua TCP.
Jimm

Hệ điều hành Red Hat MRG?
ewwhite

Ngay bây giờ, Redhat 6.3 đơn giản, nhưng MRG cũng là một khả năng. Như tôi đã đề cập ở trên, tôi đã thử cả hai, nhưng độ trễ là như nhau. Những loại điều chỉnh tôi nên quan tâm?
Jimm

Tôi muốn biết thiết lập phần cứng và NIC. Chuyển đổi mô hình giúp. Đối với điều chỉnh, khu vực rõ ràng để xem trên 6.3 là tuned-admhồ sơ của bạn .
ewwhite

Bộ điều khiển Ethernet kép: Emulex Corporation OneConnect 10Gb NIC (rev 02) và Bộ xử lý AMD Family 10h 16 nhân, mỗi bộ xử lý 2400 MHz.
Jimm
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.