#azure #console-application #performancecounter
#azure #консольное приложение #счетчик производительности
Вопрос:
Я столкнулся с некоторой критической проблемой, которая может быть интересна для тех, кто играет с window azure sdk. Я создал в EXE файл, который считывает данные счетчика производительности, такие как процессор, память, asp.net сеанс из системы, подобной
queryCollection = ExecuteWMIQuery("SELECT * FROM win32_perfformatteddata_perfdisk_physicaldisk");
и я добавил этот EXE-файл в задачу запуска простого asp.net приложение, которое я загрузил в window Azure. Теперь, когда я подключаюсь к RDP, я вижу следующие ошибки в своем журнале событий, как показано ниже.
Отключен сбор данных счетчика производительности из службы «ASP.NET_64_2.0.50727», поскольку библиотека счетчиков производительности для этой службы сгенерировала одну или несколько ошибок. Ошибки, вызвавшие это действие, были записаны в журнал событий приложения. Исправьте ошибки перед включением счетчиков производительности для этой службы.
======================================================================
Windows не может открыть 64-разрядную расширяемую библиотеку DLL счетчика ASP.NET_64_2.0.50727 в 32-разрядной среде. Обратитесь к поставщику файлов, чтобы получить 32-разрядную версию. В качестве альтернативы, если вы используете 64-разрядную собственную среду, вы можете открыть 64-разрядную расширяемую библиотеку DLL counter, используя 64-разрядную версию Performance Monitor. Чтобы использовать этот инструмент, откройте папку Windows, откройте папку System32, а затем запустите Perfmon.exe .
Итак, я думаю, что мой EXE-файл пытается получить счетчик производительности для 32-разрядной версии (win32 указывает на это), и это зарегистрирует указанную выше ошибку.
Итак, кто-нибудь здесь сталкивался с этим типом проблемы, также, если мое предположение верно, есть ли какой-либо способ реализовать мою логику EXE таким образом, чтобы ее можно было бесперебойно запускать в любой среде (32 или 64 бит)?
Надеюсь, что этот вопрос останется интересным здесь!!!
Заранее спасибо Arun.
Комментарии:
1. Мне просто интересно, есть ли какая-либо причина, по которой вы не используете Azure Diagnostics вместо того, чтобы пытаться реализовать свою собственную? msdn.microsoft.com/en-us/library/windowsazure/gg433048.aspx
2. @Igne Henriksen, да, я читал об этом, но разве это невозможно с помощью этого (моя собственная логика)? я просто получаю ошибку в журнале событий в первый раз, а также получаю данные счетчика производительности в 90% случаев.
Ответ №1:
Это правильно. IIS, запущенный в Azure, работает в 64-разрядной версии, если вы не измените его на 32-разрядный в задаче запуска. Вы можете попробовать создать его с любыми настройками процессора. Но, скорее всего, лучший способ — сделать что-то вроде того, что делает sysinternal tools. При необходимости они будут запускать новый процесс, который выполняется в 64-разрядном режиме. Затем вы можете обработать оба.
Ответ №2:
Я столкнулся с этой ошибкой при переходе на виртуальную машину Azure.
Решена с помощью InstallUtil, который находится в папке Framework64, а не в папке Framework