mod_mono: случайные ошибки CompilationException
После перезапуска сервера я иногда получаю случайные ошибки CompilationException, как это:
CompilationException: CS0006: Metadata file `/tmp/apache-temp-aspnet-0/ca373c84/assembly/shadow/10cad1cb/02cb7ade_1201ab15_00000001/ZedGraph.dll' could not be found -> HttpException: Single file build failed
и вы не можете получить доступ к приложению. Если я перезагружу сервер снова, проблема исчезнет.
Файл, который вызывает ошибку, может быть одним из моих собственных dll или зависимостей, например, mysql.dll.
Я использую моно 2.10.2, CentOS выпуск 5.7 (финальный), Apache и mod_mono на VPS Linode.
Любая идея о том, что может быть причиной?
Изменить: Так как мои проблемы начались, когда я переехал в Linode и они используют XEN, я нашел вариант --with-xen_opt=yes, который выглядит многообещающим: http://mono-project.com/Advanced_Mono_Compile_Options
3 ответа
Походит на ошибку (условие гонки?) С теневым копированием и компиляцией. Были и другие найденные и исправленные ранее... см. http://grendello.blogspot.com/2007/08/new-modmono-and-xsp-developments.html
И это отчет о похожей проблеме в 2006 году http://lists.ximian.com/pipermail/mono-list/2006-March/030970.html
Вместо перезагрузки системы вы можете попробовать перезапустить apache. Обратите внимание, я обнаружил, что это может помочь остановить Apache и затем запустить, а не перезапустить.
Вы также можете включить панель управления mod_mono и перезапустить приложение оттуда. Добавьте это в конфигурации Apache.
<Location /monocp>
SetHandler mono-ctrl
Order deny,allow
Deny from all
Allow from 127.0.0.1 <YOURIP>
</Location>
Чтобы автоматизировать этот процесс, взгляните на Monit.
FWIW, у меня была точно такая же проблема на выделенном сервере без виртуализации (8 core i7, x86 Ubuntu Server Edition), поэтому я не считаю, что это проблема, вызванная Xen. Как для OP (SCL), так и для кого-либо еще с этой проблемой, я задокументировал свою работу в другом посте SO здесь, а также подал отчет об ошибке в Mono/Xamarin.
Это похоже на состояние гонки, но не связано с виртуализацией.
Похоже, что проблемы вызваны виртуализацией XEN и моно скомпилированными двоичными файлами. Я скомпилировал моно с параметром --with-xen_opt=yes, но не смог скомпилировать XSP, поэтому не смог проверить, решил ли он это точно, но перенес точно такое же приложение на выделенный сервер и после 2 миллионов запросов Я не испытал никакой ошибки.
Обновление: проверьте ответ Махмуда