2010-12-01 50 views
8

Tôi có Azure WorkerRole đang dừng (không có trường hợp ngoại lệ nào bị ném) mà không có lý do rõ ràng. Nó dừng lại ở cùng một vị trí mỗi lần, nhưng mã chỉ đơn giản là thực hiện một quá trình mất khoảng 20 giây để chạy. Bất cứ ai có thể đề cập đến lý do tại sao điều này đang xảy ra? Có một thời gian chờ trên phương pháp OnStart() mà tôi không biết?Azure WorkerRole Dừng ngay lập tức sau khi bắt đầu

Dưới đây là một phân tích về những gì đang xảy ra trong vai trò nhân viên của tôi:

OnStart() -> Chẩn đoán Configured

Run() ->

  1. Một timer được thiết lập (60) để kích hoạt thịt của ứng dụng
  2. Một chủ đề mới được bắt đầu để tải một số cài đặt mặc định (mất ~ 30 giây)

Mã không bao giờ được chuyển đến phần thịt # 1.

Đối với # 1 ở trên, tôi đã thử nó có và không có bộ hẹn giờ (không có sự khác biệt). Đối với # 2 ở trên, tôi đã thử nó có và không có bắt đầu một chủ đề mới (không có sự khác biệt).

Dưới đây là kết quả gỡ lỗi cho vai trò nhân viên của tôi:

WaWorkerHost.exe Information: 0 : deployment(108).ApiAzure.Workers.0 - Workers.OnStart() 
Microsoft.WindowsAzure.ServiceRuntime Information: 202 : Role entrypoint . COMPLETED OnStart() 
The thread 'Role Initialization Thread' (0x29fc) has exited with code 0 (0x0). 
Microsoft.WindowsAzure.ServiceRuntime Information: 203 : Role entrypoint . CALLING Run() 
'WaWorkerHost.exe' (Managed (v4.0.30319)): Loaded 'C:\Users\Jason A. Kiesel\Projects\FS_CITYSOURCED\WorkersAzure\bin\Stage\WorkersAzure.csx\roles\Workers\approot\FreedomSpeaks.Logging.dll', Symbols loaded. 
Microsoft.WindowsAzure.ServiceRuntime Warning: 204 : Role entrypoint . COMPLETED Run() ==> ROLE RECYCLING INITIATED 
Microsoft.WindowsAzure.ServiceRuntime Information: 503 : Role instance recycling is starting 
The thread 'Role Start Thread' (0x1fa0) has exited with code 0 (0x0). 
The thread '<No Name>' (0x1624) has exited with code 0 (0x0). 
'WaWorkerHost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_64\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll' 
'WaWorkerHost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_64\System.Transactions\v4.0_4.0.0.0__b77a5c561934e089\System.Transactions.dll' 
'WaWorkerHost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_64\System.EnterpriseServices\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices.dll' 
'WaWorkerHost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Numerics\v4.0_4.0.0.0__b77a5c561934e089\System.Numerics.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 
Microsoft.WindowsAzure.ServiceRuntime Information: 205 : Role entrypoint . CALLING OnStop() 
WaWorkerHost.exe Information: 0 : deployment(108).ApiAzure.Workers.0 - Workers.OnStop() 
Microsoft.WindowsAzure.ServiceRuntime Information: 206 : Role entrypoint . COMPLETED OnStop() 
The thread 'Role Stop Thread' (0x2dac) has exited with code 0 (0x0). 
The program '[12228] WaWorkerHost.exe: Managed (v4.0.30319)' has exited with code -66053 (0xfffefdfb). 
+0

Bạn có thể đăng mã không? – Igorek

+1

Tôi đã tìm ra lý do tại sao ứng dụng bị lỗi và được sửa chữa, nhưng nó vẫn không có ý nghĩa đối với tôi là tại sao vai trò của nhân viên sẽ sụp đổ ngay từ đầu. Phần "config" của ứng dụng đã được kích hoạt khi bắt đầu có một phương thức mất nhiều thời gian để chạy. Tôi đã chuyển phần đó của mã "config" để chạy theo yêu cầu (tải chậm). Điều đó dường như để khắc phục vấn đề. – Jason

+0

Bạn đã tìm ra lý do tại sao nó bị lỗi? Tôi dường như có cùng một vấn đề, nhưng không có một ngoại lệ nó là khá khó khăn để gỡ lỗi:/ –

Trả lời

7

Nếu không nhìn thấy mã, có vẻ như phương pháp Run của bạn được thoát. Nếu phương thức chạy đã thoát, vai trò sẽ dừng lại. Cách vai trò công nhân mặc định được tạo khi bạn thêm vào dự án đám mây trong Visual Studio thực hiện việc này là đặt vòng lặp vô hạn vào cuối phương thức. Vì vậy, mã của bạn có thể trông tương tự như sau:

public override void Run() 
{ 
    StartMyTimer(); 
    LoadDefaultSettings(); 

    while (true) 
    { 
     CheckToMakeSureSpawnedThreadsAreRunningOK(); 
     System.Threading.Thread.Sleep(10000); 
    } 
} 

Như đã đề cập bởi smarx trong các ý kiến, nó cũng sẽ có thể sử dụng System.Threading.Thread.Sleep(Timeout.Infinite) thay vì vòng lặp.

+1

Thay vì vòng lặp, tại sao không Thread.Sleep (Timeout.Infinite)? – smarx

+0

Chủ yếu là vì tôi không nghĩ về nó. Vòng lặp vô hạn vì đó là những gì là trong vai trò cơ bản khi bạn thêm một. Cấp nó cũng có một thông điệp theo dõi được viết ra mỗi X giây để cho bạn biết rằng vai trò vẫn đang chạy.Khi tôi đang xây dựng một trong những vai trò công nhân đầu tiên của mình, tôi cũng đã xem xét vòng lặp và nghĩ "những gì lãng phí thời gian" và xóa nó. Gây ra một vấn đề như những gì đang được trải nghiệm ở đây. – knightpfhor

10

Vòng lặp chạy() không bắt buộc ít nhất trong trình mô phỏng phiên bản 1.6 hoặc cao hơn. Tuy nhiên, tôi có cùng một vấn đề ngày hôm nay. Tôi đã dành một vài giờ để tìm hiểu lý do có thể là gì và thấy rằng dự án của tôi sử dụng tham chiếu đến phiên bản Microsoft.Windows.Azure phiên bản 1.7 và trình mô phỏng tôi sử dụng là từ phiên bản tháng 10 (1.8). Các dự án Web hoạt động tốt nhưng các vai trò công nhân quá trình đang bắt đầu và dừng ngay lập tức như bạn mô tả. OnStart, Run và OnStop không được gọi. Khi tôi tham chiếu vai trò công nhân của tôi đến 1,8 hội đồng, nó bắt đầu hoạt động trở lại. Một vài giờ lãng phí, cảm ơn Microsoft ...

+0

Bạn vừa lưu tôi một vài giờ điều tra @Alexey. Cảm ơn! :) http://stackoverflow.com/questions/19253015/will-azure-find-my-roleentrypoint-implementation-class-if-thats-the-direct-clas/19253556#19253556 – rui

+0

Chào mừng, đó là thực nhức đầu với phiên bản Azure SDK. –

+0

Tôi quan sát thấy điều này chạy tại địa phương một mẫu tải về từ MSDN. Tham chiếu Microsoft.WindowsAzure.ServiceRuntime là 2.5.0.0 trong khi 2.7.0.0 có sẵn. Việc nâng cấp tham chiếu đã khiến vấn đề biến mất. Tôi sẽ tiếp tục quan sát thấy rằng trước khi các điểm ngắt sửa lỗi trong OnStart và Run không bị tấn công. –

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