У меня есть довольно большой серверный процесс, написанный на .net-3.5, то есть работающий на VMWare vCenter Server, который продолжает аварийно завершать работу без сообщений об ошибках. Процесс создается службой Windows в 32-разрядной Windows Server 2003 и предназначен для длительного процесса (несколько дней). Это процесс совместной работы, который принимает соединения через Tcp-сокеты от нескольких клиентов, работающих на других компьютерах с Windows XP, и позволяет им обмениваться данными. Кроме того, процесс также самостоятельно размещает около 8 служб WCF, которые предоставляют смешанные конечные точки Tcp и Http. Процесс обычно потребляет около 500 МБ памяти и между 30-50% процессорного времени. Существует также экземпляр SQL Server 2005 на той же виртуальной машине, на которой размещено 6 баз данных, и которая занимает около 1-1,2 ГБ памяти. На всю систему было выделено 8 Гб оперативной памяти, и она потребляет до 7 Гб при нормальной работе. Я предполагаю, что PAE включен, чтобы разрешить системе адресовать 8 Гб оперативной памяти, но не подтвердил это.
Проблема заключается в том, что в, казалось бы, случайные моменты времени процесс внезапно завершается сбоем без сообщений об ошибках, в том числе в журнале событий. Я пытался подключить отладчики к процессу, и они также не обнаружили сбой. Сначала я попробовал WinDbg в сборке релиза с загруженными символами, затем заменил все dll / exe релиза на отладочные сборки и загрузил их символы. Сбои все еще происходили, и отладчик их не ловил. Затем я установил Visual Studio в системе с надстройкой .Net Reflector и прикрепил ее. Это также не поймало крушение.
Прежде чем читать мне лекцию о том, почему мы запускаем так много вещей на одной виртуальной машине, знайте, что я не проектировал систему и не реализовал ее таким образом. Наш клиент продиктовал это по определенным причинам, и меня попросили прийти и заставить его работать. Меня интересует только критика окружающей среды, если вы можете найти конкретные доказательства, которые помогут объяснить внезапные сбои. Наш клиент может захотеть изменить окружающую среду, если мы сможем показать такие доказательства. Будем весьма благодарны за любые дополнительные методы отладки, которые позволят мне получить больше информации о сбое.