Làm cách nào để tìm nguyên nhân cho sự khác biệt lớn về hiệu suất giữa hai máy chủ Ubuntu giống hệt nhau?


9

Tôi đang chạy hai máy chủ Dell R410 trong cùng một giá của trung tâm dữ liệu (phía sau bộ cân bằng tải). Cả hai đều có cùng cấu hình phần cứng, chạy Ubuntu 10.4, có cùng các gói được cài đặt và chạy cùng một máy chủ web Java (không tải khác) và tôi thấy sự khác biệt hiệu năng đáng kể giữa hai gói.

Sự khác biệt về hiệu năng thể hiện rõ nhất ở thời gian phản hồi trung bình của cả hai máy chủ (được đo bằng chính ứng dụng Java, không có độ trễ mạng): Một trong số chúng nhanh hơn 20-30% so với máy chủ kia, rất nhất quán.
Tôi đã từng dstattìm ra, nếu có nhiều chuyển đổi ngữ cảnh, IO, hoán đổi hoặc bất cứ điều gì, nhưng tôi thấy không có lý do cho sự khác biệt. Với cùng một khối lượng công việc, (không trao đổi, hầu như không có IO), việc sử dụng và tải cpu cao hơn trên một máy chủ.

Vì vậy, sự khác biệt dường như chủ yếu là CPU bị ràng buộc, nhưng trong khi một điểm chuẩn cpu đơn giản sử dụng sysbench(với tất cả các tải khác bị tắt) đã mang lại sự khác biệt, nó chỉ là 6%. Vì vậy, có thể nó không chỉ là CPU mà còn là hiệu năng bộ nhớ.

Cho đến nay tôi đã kiểm tra:

  • Phần mềm sửa đổi trên tất cả các thành phần (giống hệt nhau)
  • Cài đặt BIOS (Tôi đã sử dụng kết xuất bằng cách sử dụng dmidecodevà điều đó không cho thấy sự khác biệt)
  • Tôi so sánh /proc/cpuinfo, không có gì khác biệt.
  • Tôi so sánh đầu ra của cpufreq-info, không có sự khác biệt.
  • Tham số Java / JVM (cùng phiên bản và tham số trên cả hai hệ thống)

Ngoài ra, tôi đã thay thế hoàn toàn RAM vài tháng trước, mà không có hiệu quả.

Tôi bị lạc Tôi có thể làm gì để tìm ra, chuyện gì đang xảy ra?

CẬP NHẬT : Yay! Cả hai máy chủ thực hiện như nhau bây giờ. Đó là cài đặt "power CRAP" khi jim_m_somewhere đặt tên cho chúng trong các bình luận. Các tùy chọn BIOS cho "Quản lý năng lượng" là "Hiệu suất tối đa" trên máy chủ nhanh và trên "Bộ điều khiển công suất hoạt động" (cài đặt mặc định từ Dell) trên một máy khác. Rõ ràng là tôi đã quên, rằng tôi đã thực hiện cài đặt đó hai năm trước và tôi đã không làm điều đó trên tất cả các máy chủ. Cảm ơn tất cả cho đầu vào rất hữu ích của bạn!


2
Có thể bạn có RAM bị lỗi. Nếu ứng dụng của bạn nặng mạng, nó có thể là bất cứ thứ gì dọc theo ngăn xếp mạng.
Kyle

2
Bạn có thể so sánh "Cài đặt CPU nâng cao" trong BIOS không? - có thể chạy lệnh ipmitool để làm như vậy? Tốc độ trên RAM có giống nhau không? Tôi giả sử bạn đã kiểm tra xem bạn có sao lưu pin trên đĩa / bộ điều khiển không ... chỉ nghĩ "hết tiếng" ... RAM trên cả hai hộp có giống nhau không? đã đăng ký hoặc chưa đăng ký ... AH ... bạn đã kiểm tra xem "CRAP điện" - ACPI đã tắt trên cả hai máy chủ chưa?
jim_m_somewhere

2
nếu họ đang phục vụ cùng một dữ liệu, bất kỳ cân bằng tải nào đang diễn ra từ fw hoặc dns? các số liệu thống kê mạng trông như thế nào? cấu hình java giống hệt nhau không? kích thước heap java là như nhau? chụp trong bóng tối trên cái này
au_stan

2
Là cấu hình phần mềm thực sự giống hệt nhau? Ví dụ: AppArmor có được bật trên một và bị tắt ở bên kia không? Đồng thời kiểm tra 'dmesg' để biết lỗi.
Anton Cohen

1
Bạn đã kiểm tra cáp có dây của mạng, cổng trên Switch và bạn cũng thấy các iops hoặc kiểm tra sức khỏe của ổ cứng ... Trân trọng

Câu trả lời:


6

Hai ý tưởng, tùy thuộc vào mức độ bạn muốn đi với điều này:

  1. Hoán đổi đĩa của cả hai máy chủ và xem hiệu suất tốc độ có còn trên phần cứng hay di chuyển với phần mềm.

  2. So sánh đầu ra của /opt/dell/toolkit/bin/syscfg -o complete-bios-config.outnếu bạn bằng cách nào đó có thể lừa gói này để cài đặt.


Đầu ra của dstat cho thấy khá rõ ràng, rằng sự khác biệt về hiệu suất cũng xảy ra, khi không có IO xảy ra. Cài đặt syscfg trên Ubuntu 10.4 có vẻ khó khăn. Tôi đã so sánh đầu ra của dmidecode rồi, sysctl sẽ hiển thị nhiều hơn chứ? Có lẽ nó ít hoạt động hơn đối với ảnh của từng màn hình BIOS và so sánh chúng. Tôi có thể thử cái này
the.duckman

1
Bằng cách hoán đổi các đĩa, tôi không có ý điều tra IO, mà là nếu đó là cấu hình phần mềm (mis) gây ra sự chậm chạp (ví dụ như một tham số kernel lẻ).
chutz

3

Nhiều khả năng hơn cho đầu ra và khác:

  • sysctl -a (đảm bảo các chuỗi nhân giống nhau)
  • cat / Proc / interrupt (Có thể có một số phần cứng khác gây rối?)
  • danh sách cảm biến ipmitool (bắn lâu, nhưng kiểm tra sự khác biệt ở mức độ thấp hơn, quá nhiệt, sự cố điện áp, v.v.)

Cảm ơn, không có sự khác biệt rõ ràng trong đầu ra của các lệnh này, thật không may.
the.duckman

2
Tất cả sự khác biệt là rõ ràng, nếu bạn so sánh các tập tin bằng phần mềm . Vui lòng tham khảo câu hỏi này: Làm thế nào để tôi tìm hai tập tin cấu hình?
Skyhawk

3

Nghe có vẻ như nó có thể là bộ cân bằng tải liên quan đến tôi. Khi bạn nói "cùng một khối lượng công việc", bạn đo lường điều này như thế nào?
Bạn có trực tiếp điểm chuẩn từng máy chủ bằng cách áp dụng tải thử nghiệm trong sự cô lập không?
hoặc Bạn đang áp dụng một số tải cho bộ cân bằng tải và xem kết quả trên cả hai máy chủ?

Nếu bạn đang thực hiện thao tác sau (đo tải được đặt trên cả hai máy chủ thông qua bộ cân bằng tải) thì bộ cân bằng tải của bạn có thể không phân chia khối lượng công việc một cách chính xác giữa các máy chủ (độ lệch 20% cho một cặp máy chủ không phải là hiếm gặp bộ cân bằng tải của bạn quyết định ai nhận được yêu cầu nào), điều này khiến một máy chủ phải chịu tải nhiều hơn và do đó hoạt động kém.

. Tôi không thể nghĩ ra bất kỳ lý do có thể đo lường nào khác cho loại chênh lệch hiệu năng này giữa các máy chủ giống hệt nhau)


Bạn nói đúng, bộ cân bằng tải của chúng tôi cũng làm điều đó - nó thực sự là một tính năng. Vì vậy, tôi đã đo lường bằng nhiều cách, và vâng, tôi thậm chí đã "phát lại" các yêu cầu tương tự trên từng máy chủ một lần. Nhưng ngay cả khi chỉ cần đặt tất cả lưu lượng truy cập trực tiếp vào một máy chủ trong một thời gian và so sánh thời gian mỗi máy chủ cần để chuẩn bị phản hồi sẽ mang lại kết quả tương tự như các thiết lập phức tạp hơn.
the.duckman

Hmm - trong trường hợp đó tôi chính thức bị bối rối - nếu mọi thứ thực sự giống hệt nhau (và chúng tôi dường như đã xác nhận khá rõ rằng đó là) bạn nên ở trong một tỷ lệ lỗi hợp lý trên các số hiệu suất (± 5-7%) - bạn Tôi đang thấy các biến thể của hơn gấp đôi số đó và tôi không biết tại sao: - /
voretaq7

3

Hãy thử một số công cụ profiling, một trong hai hệ thống profiling như Perf hoặc Java profiling như VisualVM .

Với sự hoàn hảo, bạn có thể lập hồ sơ quy trình Java đang chạy bằng PID hoặc lập hồ sơ điểm chuẩn. Nhìn vào cả hai hệ thống, xem hệ thống chậm đang dành thời gian ở đâu.

apt-get install linux-tools-common linux-tools

Sau đó, một cái gì đó như:

perf record -e cpu-cycles -p <pid>

hoặc là

perf record -a -g <benchmark command>

sau đó

perf report

Một vài ý tưởng về cách các hệ thống có thể thực hiện khác nhau:

Môi trường: Nhiệt độ không khí hoặc luồng không khí khác nhau? Họ đang ở trong giá đỡ? Tôi đã thấy các hệ thống thực hiện khác nhau ở các vị trí giá khác nhau, gây ra bởi rung động. Có nhiều cấp độ rung khác nhau trong mỗi giá đỡ. Không thể, vì bạn nói rằng hầu như không có I / O nào được sử dụng. Nhưng tôi đã thấy các đĩa chậm xuống tới 2MB / giây ghi tuần tự do rung động trong các phần của giá đỡ.

Lỗi phần cứng: Bất kỳ phần cứng nào cũng có thể bị lỗi. Sử dụng hồ sơ để xem những gì chậm. Đó có thể là CPU hoặc chipset xấu, tản nhiệt không được gắn đúng cách, mất cân bằng quạt gây rung, quạt hỏng, thậm chí là PSU xấu. Hãy thử trao đổi những thứ dễ trao đổi.


1

Tại sao không ai đề xuất 'sysprof' ..?

Đây là những gì nó được thiết kế cho.

Hoặc ummm giây nghĩ ... thử nhồi một số giới hạn trong /etc/security/limits.conf

Hãy thử cả hai.

Nếu bạn không nhận được gì .... bạn có thể gặp vấn đề về bảo mật hoặc khiếm khuyết về thể chất.

xem thêm: Máy chủ linux của tôi "Số lượng quy trình được tạo" và "Công tắc ngữ cảnh" đang phát triển cực kỳ nhanh

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.