Назад | Перейти на главную страницу

Приложение, работающее как служба, не может создавать такое же количество процессов, как при запуске из cmd

У меня есть приложение Windows, которое создает до 35 процессов, и оно работает нормально, когда запускается из cmd. Но когда он выполняется как служба на той же машине, он может создать только 20 процессов, а все остальные будут убиты из-за какой-то проблемы нехватки ресурсов.

Проблема сохраняется на одном сервере Windows 2003, но не воспроизводится на других серверах.

Может быть, в системе закончилась куча рабочего стола? http://support.microsoft.com/kb/184802

Как я могу это проверить?

Да, возможно, вот что происходит. Вы можете контролировать кучу рабочего стола с помощью (подождите ...) Desktop Heap Monitor! Ты можешь его достать Вот, или это третье попадание в Google для "кучи рабочего стола". Другие совпадения по этой поисковой фразе дают много подробностей о диагностике и устранении проблемы, так что прочтите немного, загрузите этот инструмент, и вы отправляетесь в гонку! Сделайте несколько снимков, а затем опубликуйте здесь, сообщив нам, поможет ли это вам.

Это приложение, которое вы создали? Если это так, вы, вероятно, могли бы записать информацию о доступной памяти и ресурсах в файл, чтобы помочь сузить то, что происходит. Что-нибудь отображается в журналах Windows? Под какой учетной записью работает служба? Если вы попытаетесь запустить службу от имени пользователя, под которым вы тестируете, произойдет ли то же самое? Разные переменные среды или другой контекст безопасности?

Что делает процесс? Это может быть что-то со странной настройкой безопасности. Может быть инструмент с sysinternals, который поможет вам отладить проблему, например, с помощью procmon. Это может показать, где параметр файла или реестра получает ошибку отказа или сбоя, в зависимости от того, что делает процесс. Даже если procmon не смог помочь, в пакете могут быть другие инструменты, которые помогут. Google для sysinternals (бесплатно от Microsoft) и посмотрите, что их материалы могут вам сказать.