2010-12-11 33 views
6

Trang web của chúng tôi nằm trong .NET nhưng với một số thư viện ASP và 32 bit cũ trong đó. Nó đã được làm việc tốt trong một thời gian (2 năm). Nhưng trong tháng qua, chúng tôi đã thấy lỗi sau trên máy chủ IIS7 của chúng tôi, mà chúng tôi không thể theo dõi và sửa lỗi:IIS7: Ứng dụng lỗi w3wp.exe, nguyên nhân gốc rễ của các sự cố này là gì?

"Ứng dụng lỗi w3wp.exe, phiên bản 7.0.6001.18000, dấu thời gian 0x47919413, mô-đun lỗi kernel32.dll, phiên bản 6.0.6001.18215, tem thời gian 0x4995344f, mã ngoại lệ 0xe053534f, lỗi offset 0x0002f328, quá trình id 0x% 9, thời gian bắt đầu ứng dụng 0x% 10. "

Chúng tôi có thể sao chép các lỗi:

  • Một trong trang aspx của chúng tôi bắt đầu xếp hàng, thực thi mã và các truy vấn (chúng tôi có response.flush() trên tất cả các trang để theo dõi nơi nghỉ đang), sau đó nó đột nhiên dừng lại và chúng tôi nhận được lỗi trên trong IIS.

  • Trang dừng bốc, mà không có sự response.flush(), nó không phải chuyển hướng đến trang error.aspx của chúng tôi (như cấu hình trong web.config)

  • Các lỗi không xảy ra tất cả các thời gian. Đôi khi, nó xảy ra 3 lần liên tiếp, sau đó nó hoạt động tốt trong 15 phút không ngừng với một chuyển hướng thích hợp đến error.aspx.

  • Lỗi chúng tôi nhận được sau đó là cổ điển: "Hoặc BOF hoặc EOF là True hoặc bản ghi hiện tại đã bị xóa".

  • Khi lỗi xảy ra, trang bị treo và tất cả các phiên khác trên cùng một máy tính từ bất kỳ trình duyệt nào cũng treo trang web (BTW, chúng tôi chỉ cho phép 1 quy trình công nhân trong khi thử nghiệm). Từ các máy tính khác, trang web tải tốt.

  • Tôi có thể tái chế Hồ bơi ứng dụng, xóa w3wp.exe, khởi động lại IIS. Không có gì sẽ làm. Cách duy nhất để tải thành công trang một lần nữa là Khởi động lại MS SQL xử lý các Kỳ phiên của chúng tôi. Tôi không biết tại sao điều này là, nhưng chúng tôi đoán rằng Session Cookies trên các trình duyệt người dùng trỏ đến một chủ đề mà không được chấm dứt đúng (do sự cố ở trên) và IIS đang chờ nó chấm dứt để xử lý thêm mã (?). Nếu ai đó có thể giải thích điều này tốt hơn, điều đó sẽ thực sự hữu ích. Có một thời gian chờ mà chúng ta có thể thiết lập để "chấm dứt" đề? Nó là một vấn đề liên quan đến MS SQL?

Tôi cũng đã xem xét sử dụng bộ nhớ riêng và bộ nhớ ảo, vì tôi nghĩ mã của chúng tôi không hiệu quả nhất và chắc chắn chúng tôi vẫn còn rò rỉ bộ nhớ. Tuy nhiên, tôi thấy sự sụp đổ của trang mặc dù cả Private và Virtual Memories vẫn còn khá thấp (dưới 100MB).

Tôi đã sử dụng Debug Diag và WinDbg như được chỉ ra ở đây: http://blogs.msdn.com/b/tess/archive/2009/03/20/debugging-a-net-crash-with-rules-in-debug-diag.aspx, nhưng chúng tôi không thể thực hiện công việc windbg, đây là những gì chúng tôi đang cố gắng làm tại thời điểm này.

Nếu ai đó có thể giúp chúng tôi hoặc chỉ cho chúng tôi hướng đi đúng hướng sẽ thực sự tuyệt vời, cảm ơn bạn.

+0

Bạn nên nói rõ những gì WinDbg vấn đề mà bạn gặp. –

Trả lời

0

Hoàn toàn có thể một trong các hội đồng được tham chiếu/liên kết của bạn ở đâu đó đã bị hỏng một cách ngẫu nhiên (có thể xảy ra) trên đĩa. Bạn có thể thử sao chép sự cố trên một máy mới, sạch sẽ với cùng số liệu thống kê, cài đặt mới của các trình điều khiển xyz mới nhất mà bạn đang sử dụng không?

Tôi đã giải quyết một vấn đề bí ẩn khiến tôi mất hàng tháng để cô lập theo cách này.Nó có vẻ sạch sẽ, máy mới với các thông số kỹ thuật tương tự và các trình điều khiển được yêu cầu sẽ hoạt động tốt - chỉ một số máy cũ hơn có cùng thông số kỹ thuật bị lỗi một cách nhất quán. Tôi đã gỡ cài đặt mọi thứ (IIS, ASP.NET, .NET, cơ sở dữ liệu và ứng dụng khách) và bắt đầu từ đầu. Nguyên nhân cuối cùng khi tôi bị cô lập là trình điều khiển máy khách db bị hỏng trên các máy cũ (và tất cả các máy cũ hơn là nhân bản của nhau, vì vậy tôi cho rằng chúng được nhân bản sau khi tham nhũng xảy ra), và dường như rối tung với không gian bộ nhớ .NET ngay cả khi tôi không gọi nó trực tiếp. Tôi vẫn chưa trả lời bài đăng của tôi "help me debug this monster" với câu trả lời này vì tôi nghi ngờ nó sẽ giúp ích cho bất kỳ ai.

+0

Cảm ơn rất nhiều Mike. Chúng tôi có 3 triển khai tại 3 trang web khác nhau với các máy chủ được cung cấp bởi các nhà cung cấp máy chủ khác nhau. Tất cả đều sụp đổ. Chúng tôi đã mua một máy chủ mới, cài đặt lại tất cả từ đầu, và nó bị hỏng theo cùng một cách. Như bạn đã đề xuất mặc dù, tôi tự hỏi liệu MS SQL của chúng tôi hoặc trình điều khiển mySQL có thể bị hỏng hay không. Bạn cũng đã cố gắng sử dụng DebugDiag/Windbg để pin-điểm mà vấn đề đến từ đâu? – yorrser

2

"Hoặc BOF hoặc EOF là True hoặc bản ghi hiện tại đã bị xóa" có nghĩa là bảng trống và bạn đang cố gắng thực hiện MoveNext. Vì vậy, kiểm tra eof trước khi bạn thực hiện bất kỳ động thái nào.

IIS nổi tiếng vì đã ném lỗi hạt nhân trong w3wp.exe như thế này. Tất cả các lỗi của bạn trong trạng thái phiên chỉ là các triệu chứng của quá trình bị lỗi. Nhiều hồ bơi APP sẽ không giúp được gì nhiều - chúng chỉ lan truyền lỗi xung quanh.

Tôi muốn đặt cược đó là lỗi SQL do môi trường người dùng của bạn thay đổi. Điều này sẽ gây ra sự chậm trễ 10 giây khi SQL cố gắng xác định truy vấn nào cần xóa. Một thắng, một thua. Kẻ thua cuộc sẽ trở lại một con trỏ đến một bảng trống bất ngờ và bạn thử di chuyển và sau đó là sự cố. Bạn có thể có thể điểm DB của bạn đến một kết nối ODBC và bật truy tìm, hoặc tìm ra một cách để có được SQL để đăng nhập nó.

Tôi có tất cả các triệu chứng tương tự như trên trong Perl. Tôi đã có thể làm cho một wrapper fn() để làm tất cả các truy vấn SQL và đăng nhập tất cả sql, + params và bất kỳ lỗi nào vào đĩa để theo dõi vấn đề. Đó là deadlocks, sau đó chúng tôi đã có thể mã trong tự động thử lại, và cuối cùng chúng tôi đã mã hóa thứ tự truy vấn và cột được quét để loại bỏ các deadlocks.

0

Chúng tôi bắt đầu nhận được lỗi này sau khi cài đặt các bản cập nhật cửa sổ trên máy Windows Server 2008R2. Dịch vụ Kích hoạt Quy trình Windows (WAS) cài đặt một số ràng buộc trang bổ sung gây ra sự cố cho thiết lập của chúng tôi.

Chúng tôi đã xóa các ràng buộc net.tcp, net.pipe, net.msmq và msmq.formatname khỏi trang web của chúng tôi và không còn có ngoại lệ ứng dụng bị lỗi.

0

Đây có thể là trường hợp cạnh, nhưng chỉ trong trường hợp ai đó đến đây và họ đang sử dụng MVCMailer, tôi đã nhận được lỗi này do phương thức .SendAsync() trên thư.

Tôi đã chuyển tất cả sang .Gửi() và dừng đột ngột.

Xem this SO answer cách để sử dụng async bưu phẩm và tránh những vụ tai nạn (bị cáo buộc, tôi không đích thân thực hiện nó)

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