Dịch vụ Windows không tự động khởi động sau khi khởi động lại?


10

Chúng tôi đã có một số dịch vụ Windows được viết bằng .NET. Chúng khởi động tốt theo cách thủ công trong các dịch vụ mmc, nhưng mặc dù được đặt thành Tự động, chúng không bao giờ khởi động khi bật nguồn (hoặc khởi động lại) máy.

Cập nhật Trong nhật ký sự kiện, thay vì thấy "xyz bắt đầu", cùng với tất cả các dịch vụ khác bắt đầu, tôi chỉ thấy "Dịch vụ xyz đã vào trạng thái dừng". và một lỗi riêng biệt cho biết "Đã hết thời gian chờ (30000 mili giây) trong khi chờ phản hồi giao dịch từ dịch vụ slsvc."

Nếu tôi tự khởi động chúng, thì tôi sẽ nhận được một mục bình thường trong nhật ký sự kiện như mong đợi và tất cả đều ổn - cho đến khi bản vá Windows Update tiếp theo buộc khởi động lại và tất cả các dịch vụ đều tắt.

Có ý kiến ​​gì không? Tôi đã thử đặt chúng thành Bắt đầu trễ mà không có sự khác biệt rõ ràng.


Tôi đã từng có một vấn đề rất giống với một số tác vụ theo lịch trình, mà cuối cùng tôi phát hiện ra tôi có thể tạo lại bằng cách thay đổi tên người dùng mà tác vụ đã chạy như sau khi nó được tạo. Tôi thấy rằng tôi có thể dễ dàng khắc phục sự cố bằng cách xóa và tạo lại các tác vụ. Đây chắc chắn là một cách tiếp cận tương tự với điều này - hãy thử loại bỏ dịch vụ và tạo lại nó. Điều này có thể giúp nếu bạn không chắc chắn làm thế nào để làm điều đó. FYI, vấn đề nhiệm vụ theo lịch trình không xảy ra nữa, tôi đoán một số cập nhật tại một số điểm đã khắc phục nó.
DaveRandom

Tôi tự hỏi liệu họ có thất bại khi bắt đầu không vì họ phụ thuộc vào dịch vụ khác (chưa bắt đầu). Bạn có thể thấy lỗi bắt đầu dịch vụ trong nhật ký hệ thống không?
newmanth

@DaveRandom việc cài đặt lại thực sự xảy ra mỗi khi chúng tôi triển khai một phiên bản mới, do đó, việc loại bỏ / thêm giải quyết vấn đề không may là không may
James Crowley

@newmanth câu hỏi được cập nhật với một số chi tiết mới - hóa ra có những mục nhật ký sự kiện mà tôi đã bỏ lỡ
James Crowley

Tôi nhận thấy trong nhận xét của bạn về câu trả lời của Rob rằng .NET là sự phụ thuộc duy nhất. Bạn có biết các nhà phát triển đã sử dụng bất kỳ API của bên thứ ba nào trong quá trình phát triển dịch vụ không? Nếu vậy, có lẽ có một số cơ chế cấp phép đang bị chặn?
newmanth

Câu trả lời:


3

Có một sửa chữa cho điều đó. Xem: http://support.microsoft.com/kb/922918

Vấn đề là, một dịch vụ có thể yêu cầu ldap hoặc một truy cập từ xa khác đang gặp phải sự chậm trễ vì điều này. Điều này đặc biệt có thể xảy ra khi máy chủ đang bắt đầu. Bằng cách mở rộng sự chậm trễ, bạn có thể đảm bảo dịch vụ sẽ bắt đầu.

Tất nhiên tốt hơn là sẽ khắc phục sự cố tại sao dịch vụ này mất quá nhiều thời gian để bắt đầu. Là môi trường của bạn không được mở rộng? Bạn đã có vấn đề về hiệu suất trên một dịch vụ đang được thăm dò bởi dịch vụ bị trì hoãn để bắt đầu chưa?


Làm thế nào cụ thể dịch vụ có thể bắt đầu được khắc phục sự cố? Có một số cách để kích hoạt đăng nhập chi tiết?
Kenny Evitt

1

Ý bạn là gì khi bạn nói "chúng tôi có một số dịch vụ Windows"? Điều đó gợi ý cho tôi rằng chúng được tạo ra bởi một người nào đó trong tổ chức của bạn? Nếu vậy thì bạn đang ở vị trí tốt hơn để gỡ lỗi chúng hơn bất kỳ ai khác ở đây - những dịch vụ này phụ thuộc vào các thành phần của windows và các lập trình viên của bạn đã xem xét việc kiểm tra tính khả dụng của các dịch vụ này và chờ chúng xuất hiện khi dịch vụ của bạn bắt đầu ?

Bạn đã xem việc đặt các dịch vụ này như một sự phụ thuộc của dịch vụ cấp phép phần mềm (đó là slsvc là gì)?

từ http://support.microsoft.com/kb/193888

Để tạo một phụ thuộc mới, chọn khóa con biểu thị dịch vụ bạn muốn trì hoãn, bấm Chỉnh sửa, rồi bấm Thêm Giá trị. Tạo một tên giá trị mới "DependOnService" (không có dấu ngoặc kép) với kiểu dữ liệu REG_MULTI_SZ, sau đó bấm OK. Khi hộp thoại Dữ liệu xuất hiện, nhập tên hoặc tên của các dịch vụ bạn muốn bắt đầu trước dịch vụ này với một mục nhập cho mỗi dòng, sau đó bấm OK.

Tên của dịch vụ bạn sẽ nhập trong hộp thoại Dữ liệu là tên chính xác của dịch vụ như xuất hiện trong sổ đăng ký dưới khóa Dịch vụ.

Khi máy tính khởi động, nó sử dụng mục này để xác minh rằng dịch vụ hoặc dịch vụ được liệt kê trong giá trị này được khởi động trước khi thử khởi động dịch vụ phụ thuộc.


Cảm ơn Rob - chúng là nội bộ - nhưng sự phụ thuộc duy nhất là khung .NET, mà tôi không tin là chạy như một dịch vụ. Nó không yêu cầu bất cứ điều gì khác khi khởi động ...
James Crowley

0

Hãy thử với điều này:

Chạy lệnh sau để xác định một sự kiện kích hoạt phù hợp với môi trường của bạn. Trong ví dụ này, lệnh xác định xem một địa chỉ IP được cung cấp cho máy chủ hay không, và sau đó nó bắt đầu hoặc dừng dịch vụ.

sc triggerinfo w32time start / networkon stop / networkoff

w32Time là tên dịch vụ của bạn

hoặc thử cái này

https://support.microsoft.com/en-us/kb/922918

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.