2012-08-30 46 views
6

Môi trường: Windows Server 2003; IIS 6, ASP.NET 2.0.50727chậm trễ khi khởi động iis với các trang aspx

Tôi sẽ phát điên với một máy chủ web hoàn toàn mới mà chúng tôi đã thiết lập (lưu ý rằng sự cố này không xảy ra trên các máy chủ web khác có cùng cấu hình). Khi tải và ứng dụng asp.net lần đầu tiên, trang bị treo trong hơn một phút trước khi hiển thị trang trong trình duyệt. Sau khi tải trang đầu tiên, mọi thứ sẽ chạy rất nhanh.

Lưu ý 1: Có thể bạn sẽ nói rằng ứng dụng đang được biên dịch lần đầu tiên. Nhưng tôi đã loại trừ điều đó. Tôi đặt tin nhắn theo dõi MỌI NGƯỜI trong ứng dụng và tất cả các tin nhắn theo dõi chạy trong vòng một giây sau khi yêu cầu trang. Do đó, ứng dụng biên dịch và chạy ngay lập tức. Nhưng khi ứng dụng kết thúc hiển thị trang và thông báo dấu vết cuối cùng của tôi được in, không có gì xảy ra. IIS đang làm điều gì đó đằng sau hậu trường trong một phút trước khi chuyển trang đã hoàn thành dọc theo http tới trình duyệt của người dùng.

Lưu ý 2: Chúng tôi thấy rằng sau khi nhấn ứng dụng lần đầu tiên và mọi thứ chạy tốt, nếu chúng ta chờ một giờ thì chúng tôi sẽ nhận được sự chậm trễ một lần nữa. Vì vậy, IIS có một cái gì đó trong bộ nhớ cache của nó mà nó xóa ra sau một giờ và làm cho trang web của chúng tôi để gian hàng một lần nữa.

Lưu ý 3: Giữa mỗi lần kiểm tra, chúng tôi dừng/khởi động IIS để buộc nó treo khi tải ứng dụng.

Lưu ý 4: Chúng tôi đã xem Trình quản lý tác vụ để xem IIS có đang tăng tốc và chiếm nhiều tài nguyên đang xử lý điều gì đó không. Nhưng đó không phải là nó. Chúng tôi đã thấy tăng đột biến rất nhanh tới 50% ngay lập tức trước khi trình duyệt hiển thị trang, nhưng trong 60 giây trước chỉ có 1% mức sử dụng trên máy chủ.

Lưu ý 5: Trong một thử nghiệm khác, tôi đã tạo trang HelloWorld.html và điều này không khiến IIS bị treo. Vì vậy, nó có một cái gì đó để làm với việc gọi thư viện ASP.NET lần đầu tiên nó sẽ gửi một trang kết xuất trên http. Ngoài ra, kể từ khi ứng dụng đã được biên dịch và chạy ngay lập tức, nó chỉ là một phần của asp.net gửi trang được hiển thị tới trình duyệt của người dùng gây ra sự chậm trễ.

Bất kỳ ý tưởng nào? Chúng tôi là một sự mất mát ở đây. Tất cả các máy chủ web khác của chúng tôi được thiết lập theo cùng một cách và hoạt động tốt, nhưng đây là một cài đặt mới. Vì vậy, phải có một thiết lập cấu hình đã bị bỏ lỡ hoặc có thể một cái gì đó cần phải được cài đặt?

Cảm ơn,

Brian

+0

Bạn có đọc trên trình xem sự kiện bất kỳ lỗi asp.net nào không? Bạn phải có ít nhất một số sự kiện outs thời gian - và kết nối chặt chẽ từ khách hàng thả chủ đề. – Aristos

+0

Chúng tôi đã xem trình xem sự kiện nhưng không thấy gì cả. Tôi sẽ thử nhiều hơn và xem lại. Ngoài ra, máy chủ này không có lưu lượng truy cập ngoại trừ thử nghiệm của chúng tôi. Vì vậy, không có khách hàng bỏ chủ đề hoặc bất cứ điều gì như thế. Chỉ cần chúng tôi thực hiện yêu cầu trang đơn giản và xem là treo. – user441058

+0

Sự cố khác có thể là đặt lại nhanh về nhóm, bạn có thể có cấu hình tương tự nhưng các hồ bơi có thể khác nhau trong cài đặt. Hãy kiểm tra xem chúng có thực hiện bất kỳ khởi động lại chúng nào không, ví dụ như bộ nhớ phát triển hoặc quá nhanh, v.v. – Aristos

Trả lời

0

Có thể là một số cài đặt aspnet.config trên hộp này là khác nhau từ những người khác. Bạn đã thử sao chép các tệp cấu hình của họ vào máy chủ này chưa? Có vẻ như tùy chọn giấy chứng nhận cùng với những thay đổi registry mà bạn có thể làm để loại bỏ một số thời gian trễ trong quá trình tải ban đầu của một trang (precompiling sang một bên)

Xem herehere

+0

tệp aspnet.config giống hệt nhau (và khá đơn giản). [Code] [/ code] – user441058

1

Nếu bạn có quyền truy cập vào các máy chủ, sau đó hãy chắc chắn rằng tái chế hồ bơi ứng dụng đang thực sự đăng nhập vào các bản ghi sự kiện

cscript adsutil.vbs get w3svc/AppPools/DefaultAppPool/LogEventOnRecycle

bạn có thể thiết lập nó để đăng nhập tất cả mọi thứ với cscript adsutil.vbs đặt w 3svc/AppPools/DefaultAppPool/LogEventOnRecycle 255

See more here

Sau đó kiểm tra nếu có bất kỳ tái chế.

Khởi tạo ứng dụng, tạo quy trình, chủ đề công việc, tải miền ứng dụng và tất cả các tham chiếu của dll có thể mất chút thời gian, điều đó là bình thường, nhưng chậm trễ 1 phút là điều gì đó khác.

Cố gắng hành tiền biên dịch ứng dụng trên máy chủ và xem giúp aspnet_compiler -m/LM/W3SVC/[site id]/Root/[appname của bạn]

Nếu bạn muốn tìm hiểu sâu hơn, bạn có thể kiểm tra dấu vết sự kiện ETW.

  1. cung cấp dịch vụ truy vấn logman
  2. Guids liên quan
  3. Save the IIS /ASP.NET vào một tập tin như iisproviders.txt
  4. logman bắt đầu ExampleTrace -pf iisproviders.txt -ets -rt
  5. sinh sản
  6. LogParser "SELECT * FROM ExampleTrace" -i: ETW
  7. dừng logman Ví dụTrace -ets

Bạn có thể tìm thêm tại đây Troubleshooting appdomain restarts and other issues with ETW tracing

Tôi cũng sẽ kiểm tra w3wp.exe bằng procexp nếu nó có thời gian kết nối TCP hoặc với Procmon cho các đầu mối khác.

Nếu bạn có kinh nghiệm với windbg, sau đó bạn có thể làm cho một yêu cầu đến ứng dụng một cách nhanh chóng sau đó đính kèm các chương trình gỡ rối cho quá trình

windbg -p [process id of the app pool] 
.loadby sos mscorwks 
g 

và mang nó từ đó. Nếu có ngoại lệ, xử lý sự cố, v.v. bạn sẽ có thể bắt được ...

Khi chúng tôi gặp sự cố máy chủ lạ như thế này và cài đặt lại .NET đã giải quyết được vấn đề, vẫn không chắc nguyên nhân là gì.

0

Một điều bạn có thể muốn kiểm tra là nếu có bất kỳ truy cập cơ sở dữ liệu nào đang diễn ra khi tải trang của bạn. Điều đó có thể chặn việc tạo trang trong khi tải trang ban đầu. Sau đó, khi truy vấn được lưu vào bộ nhớ cache (hoặc bằng công cụ db hoặc cơ chế bộ nhớ cache khác như memcached), tải trang tiếp theo hoạt động như bình thường.

Theo nhận xét cuối cùng của bạn,

tôi có thể dừng/khởi động IIS nhiều lần và ứng dụng luôn chạy ngay lập tức. Tôi nghĩ rằng nó đã được cố định cho tốt. Nhưng bây giờ tôi chỉ cố gắng một lần nữa (nó đã được ngồi nhàn rỗi trong vài giờ qua) và bây giờ nó là trở lại để treo trên yêu cầu đầu tiên.

Điều này có nghĩa là bộ nhớ cache đã hết hạn và do đó cần phải nhấn lại vào cơ sở dữ liệu, gây chậm trễ tải trang.

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