ASP.NET High CPU Mang máy chủ đến đầu gối của họ


8

Ok, bản dựng mới của chúng tôi có 100% cpu tăng đột biến trên mỗi máy chủ theo các khoảng thời gian ngẫu nhiên. Đối với thời lượng dài, nó làm cho trang web hoàn toàn không phản hồi - điều này sẽ vào thời gian cao điểm khi mọi người ở các quốc gia khác nhau đăng nhập vào trang web, v.v.

Chúng tôi đã xem xét perfmom, trình biên dịch bộ nhớ, trình biên dịch CLR, trình biên dịch sql, trình biên dịch kiến ​​cổng đỏ, đã thử kiểm tra tải trong UAT - nhưng thậm chí không thể tái tạo vấn đề. Điều này có thể có nghĩa là chỉ có hàng ngàn người dùng truy cập vào trang web trực tiếp khiến nó xảy ra.

Một mô hình chúng tôi đã nhận thấy là mã mới - bản dựng bị hỏng - thực sự sử dụng các luồng ít hơn đáng chú ý.

Chúng tôi cũng đang sử dụng lò xo cho IOC - điều này có tiếng tăm không?

Để làm cho mọi thứ tồi tệ hơn, chúng tôi không thể triển khai để sống do tác động kinh doanh - vì vậy không thể thu hẹp vấn đề xuống tập hợp các tính năng mới mà chúng tôi đã thêm.

Chúng tôi thực sự bị hủy diệt - có ai có bất kỳ vết sẹo chiến đấu nào có thể cứu chúng tôi một vài mạng không?


Các cảm biến nhiệt độ báo cáo những gì? Tôi tự hỏi nếu nguồn cung cấp năng lượng của bạn không thể theo kịp. (Không biết làm thế nào để kiểm tra điều này.)
sarnold

2
Khi bạn nói mang máy chủ xuống, bạn có thể thêm chi tiết, đó có phải là BSOD không? Bạn có nghĩa là nó khởi động lại hoặc có thể khởi động lại miền ứng dụng.

Không có cách nào cả "100% cpu tăng đột biến " có thể "hạ bệ" máy chủ. Nó sẽ phải được chốt ở mức 100% trong một thời gian khá dài, cùng với rắc rối với tản nhiệt.
Andrew Barber

1
Nó đang làm gì vậy ?? Quá trình nào đang sử dụng CPU ở đỉnh? Đây là câu hỏi quan trọng nhất.
Aliostad

Cập nhật câu hỏi của tôi - điều này có tốt hơn không? Cảm ơn vì -1 :)

Câu trả lời:


3

Tôi đề nghị thực hiện việc bỏ bộ nhớ và phân tích chúng trong WinDdg với Sos. Tôi đã sửa một số vấn đề trong quá trình sản xuất của chúng tôi. Tôi có thể sẽ không thể chẩn đoán nếu không có WinDbg.

Tess Fernandez có blog tuyệt vời nơi bạn có thể tìm hiểu cách phân tích các bãi chứa bộ nhớ.


blog đó là một tài nguyên tuyệt vời và chúng tôi đã sử dụng nó. Vấn đề của chúng tôi là chúng tôi không thể tạo lại vấn đề một lần nữa và nhận được các bãi.

1
Để tạo lại vấn đề, bạn có thể đập hệ thống kiểm tra của mình bằng jmeter ( jmeter.apache.org ) và ab ( httpd.apache.org/docs/2.0/programs/ab.html ). Với những điều này, đa lõi, mạng LAN nhanh và một số đồng nghiệp, bạn sẽ có thể nhấn mạnh máy chủ đủ.
La Mã

1

Điều này thường được gây ra bởi việc dọn dẹp đối tượng tồn tại lâu dài trong GC ( stackoverflow có vấn đề này, xem liên kết ). Bạn đang lưu trữ nhiều bộ sưu tập đối tượng trong bộ đệm hoặc phiên?

Tấn công bằng GC

Tôi cũng khuyên bạn nên xây dựng và cấu hình một máy chủ mới trong sản xuất để kiểm tra. Nếu bạn có sự điên rồ ngẫu nhiên và không biết tại sao và không thể sao chép nó, tôi sẽ chỉ ngón tay vào phần cứng hoặc cấu hình, không phải mã.


Chúng tôi không thể đặt bất kỳ mã mới nào vì nó bổ sung các tính năng tin tức. Khi mã còn hoạt động, việc sử dụng GC là như nhau - bao gồm cả thế hệ 2. Mặc dù vậy, cảm ơn - bạn có thêm gợi ý nào không?

Không phải là không thể, nhưng phần cứng và cấu hình gần giống như lần triển khai cuối cùng mà chúng tôi đã hoàn nguyên và đang hoạt động thành công.

1

Đây có phải là máy chủ ảo với tài nguyên được chia sẻ hoặc máy chủ vật lý không? Nếu đó là trước đây có lẽ bạn có thể nhìn vào việc dành tài nguyên cho máy chủ này. Chúc may mắn...


0

Hãy thử sử dụng cache servernhư một frontend như thế nào Apache Traffic Server (ATS).

Mặc dù điều này sẽ không giải quyết được vấn đề, nhưng nó có thể giúp xác định nó bởi vì bạn sẽ đồng thời di chuyển tải có hại có khả năng từ phần phụ trợ (xem liệu frontend cũng có vấn đề) và làm cho mọi thứ bớt nóng hơn trên phần phụ trợ. dễ dàng hơn để xem những gì sai.


0

Cố gắng đoán lỗi mà không có dữ liệu là vô nghĩa. Có ai đó trên stackoverflow hoặc trong nhóm kỹ thuật của bạn có thể gặp may mắn nhưng đó chỉ là kỹ thuật tồi và bạn không thể đưa ra kế hoạch về việc bạn sẽ mất bao lâu để thử mọi phỏng đoán và liệu bạn có thể tìm ra vấn đề không.

  1. Bạn phải repro vấn đề. Jmeter là một khởi đầu tốt vì bề rộng của nó, nhưng chúng tôi không thể đề xuất công cụ phù hợp mà không biết kiến ​​trúc của chúng tôi.
  2. Ghi nhật ký đặc biệt trong lớp ứng dụng của bạn là phải. Bạn có thể kích hoạt dấu vết IIS để có hiệu suất chậm, nhưng các muppets tại Microsoft đã tạo ra nó để bạn không thể nắm bắt toàn bộ luồng đường ống khi nó chậm. Nếu nó là như vậy khó có thể repro, bạn sẽ thực sự thích một số bản ghi để giúp bạn thu hẹp nơi vấn đề là. (giống như oh, đó là bất cứ khi nào chúng ta gọi đây là Proc được lưu trữ).

CPU 100% hơi đáng ngờ theo nghĩa là không có khả năng là I / O (cung cấp db là một hộp khác, cơ sở dữ liệu chậm sẽ không gây ra CPU 100% trên máy chủ web). Bạn cần nhìn gần về nhà hơn.

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.