
Я настраиваю сервер разработки и хочу настроить его для обслуживания страниц ASP.NET с использованием Mono. Я планирую использовать Cherokee и Mono (http://www.cherokee-project.com/doc/cookbook_mono.html) и задался вопросом, проводил ли кто-нибудь тестирование производительности, сравнивая стек на базе Unix со стеком на базе Windows.
решение1
При тестировании рабочих нагрузок Mono/Linux и .NET/Windows следует помнить, что здесь играет роль не только среда выполнения.
Есть области, в которых Linux работает лучше, чем Windows (большинство операций ввода-вывода и сетевых операций, как правило, выполняются быстрее для сопоставимых программ на языке C). В то же время, .NET имеет более продвинутый сборщик мусора и более продвинутый JIT-компилятор.
Когда дело доходит до библиотек классов, это действительно зависит от того, какие пути кода вы используете. Как сказал JacksonH в предыдущем посте, вы можете попасть в пути кода, которые были оптимизированы в одной реализации, но не в другой, и наоборот.
При работе с рабочими нагрузками ASP.NET следует помнить, что настройка по умолчанию направляет все входящие запросы в один «рабочий» процесс; mod_mono и Cherokee используют аналогичный подход:
(источник:mono-project.com)
По крайней мере, в Apache мы поддерживаем механизм, позволяющий разделить рабочие нагрузки приложения между несколькими исполнителями, что помогает при высоких нагрузках, поскольку позволяет избежать внутрипроцессной блокировки и предоставляет каждому исполнителю целый пул потоков для работы:
(источник:mono-project.com)
Подробная информация о настройке этой установки доступна здесь:
решение2
Это своего рода не ответ. Однако здесь нет настоящего ответа. К сожалению, эта штука сильно зависит от приложения. Ваше приложение может натолкнуться на что-то, что Mono делает очень хорошо, или вы можете активно использовать что-то, что реализовано плохо или имеет некоторые ошибки. На самом деле это не тот случай, когда Mono в X раз медленнее/быстрее IIS.
Я предлагаю взять ваше приложение, развернуть его на двух разных экземплярах EC2 (один Windows и один Mono) и провести тестирование там. Если вы обнаружите серьезные проблемы на экземпляре Mono, сообщите о них, и мы постараемся все улучшить.
Несмотря на все вышесказанное, я могу сказать по личному опыту, что Mono aspx работает действительно хорошо.