Подтвердить что ты не робот

Производительность ASP.NET в Mono (Linux) и IIS (Window)

Есть ли какая-либо производительность, отличающаяся от размещения вашего asp.net в моно на linux и iis на сервере Windows?

4b9b3361

Ответ 1

Конечно, есть разница, так же как разница в производительности между Java и .Net. Тем не менее, он будет широко варьироваться в зависимости от того, что делает приложение.

Есть вещи, где .Net намного быстрее, чем Mono. Есть вещи, где Моно намного быстрее, чем .Net. Есть вещи, где они выполняют примерно равные. То же самое справедливо при сравнении приложений, работающих в Windows или Linux. То же самое справедливо при сравнении приложений, запущенных в IIS и Apache.

Вероятно, вы можете быстро запустить приложение, и вы обнаружите, что ваша производительность будет зависеть от ваших методов программирования. Разница в нескольких запросах в секунду, вероятно, не является большой проблемой, если у вас нет большой фермы серверов, и в этом случае у вас, скорее всего, есть ресурсы для тестирования на обоих и посмотреть, что быстрее для вашего конкретного приложения.

Ответ 2

Что касается предложения lextm о том, что публикация результатов перфориционных сравнений "невозможна", Лицензионное соглашение с конечным пользователем (aka EULA) для Windows Vista Ultimate позволяет, с условиями.

ТЕСТИРОВАНИЕ MICROSOFT.NET BENCHMARK.программное обеспечение включает в себя один или несколько компоненты .NET Framework 3.0 ( "Компоненты .NET" ). Вы можете проводить внутреннее контрольное тестирование этих компоненты. Вы можете раскрыть результаты любого контрольного теста тех компонентов при условии, что вы соблюдаете с условиями, изложенными в http://go.microsoft.com/fwlink/?LinkID=66406. Несмотря на любое другое соглашение вы можете иметь с Microsoft, если вы раскрывать такие результаты тестов, Microsoft имеет право раскрывать результаты эталонных тестов тесты, которые он проводит с вашими продуктами которые конкурируют с применимым .NET Компонент, если он соответствует те же условия, изложенные в http://go.microsoft.com/fwlink/?LinkID=66406.

Условия, которые я прочитал, являются разумными требованиями к раскрытию: исходным кодом, который вы использовали для тестирования, версиями тестируемого программного обеспечения, датой проведения тестов, настройкой и оптимизацией, которые вы сделали, и т.д.

EULA для Windows Server 2003 содержит те же самые положения. Я не смог найти EULA для Windows Server 2008 (последнее воплощение), но я предполагаю, что положения по бенчмаркингу остаются.

Добавление. Если вы посмотрите в EULA для Windows7, вы, скорее всего, найдете предложение без бенчмаркинга или, точнее, предложение без публикации; это потому, что Win7 все еще находится в предварительном выпуске. Когда он официально выпущен, ожидайте стандартных условий публикации.

В прошлом Microsoft придерживалась более ограничительной политики в этой области. В основном: вам требуется разрешение от нас (Microsoft), чтобы раскрыть сравнение производительности. Эта политика была смягчена, даже ретроактивно, к .NET v1.0 и v1.1, согласно ссылка в вышеупомянутом EULA.

Ответ 3

Моно отстой!

Или более политически корректно: Mono пока не готов к лучшему времени, по крайней мере, для веб-приложений Asp.Net:

  • Поддержка кеширования
  • Производительность ужасно нестабильна и отбрасывается после запуска приложения.

EDIT: Добавлены кавычки для моего сообщения, ответьте на последний комментарий.

Однако, чтобы сделать честное сравнение... Я должен включить кеширование... добавление следующей строки в заголовок файла aspx должно помочь мне.

<%@ OutputCache Duration="20" VaryByParam="None" %>

Я сделал это - никакого результата! Производительность такая же.

Примечание: после более глубокой проверки реализация кеша в modo очень ограничена и плоха, после недавних проверок она по-прежнему сохраняется в более новых версиях моно.

Хорошо, в любом случае я сделал некоторые тесты (...), простые часы дают мне около 750 страниц в секунду для кешированного варианта и 650 для не кешированного. Тесты проводились под IIS 5.0 на двухъядерном процессоре Pentium D 3G

Тот же код... с mod_mono (под Signle Core AMD Athlon 3000) дал мне:

  • 350 страниц в секунду.
  • Следующий запуск дал 300.
  • next 200
  • и следующие 150

Таким образом, бенчмаркинг невозможно.

Относится ли сообщение к сообщению, но он не является дополнительным?

Нет моно определенно не готов к прайм-тайму.

Ответ 4

Вот хороший benchmark, где кто-то тестировал разницу между windows/IIS и Linux/Apache/Mono (mod_mono). Сумасшедший mod_mono (плагин apache mono) был значительно более результативным. Конечно, я уверен, что в определенных обстоятельствах это будет по-другому, но учитывая, что низкопрофильные linux и apache - это отличная работа, которую сделали моно-парни, разумно, что Linux/Apache/Mono - лучший способ пойти. Теперь, когда мы будем надеяться, с новым ASP с открытым исходным кодом, мы увидим, что скоро появятся суперпроизводительные Linux.Net-серверы (загрунтованные и готовые к облаку).

график сравнения производительности

Ответ 5

Я запускаю моно приложения в mod_mono. Из удобства использования он отлично работает, хотя я не делал никаких тестов. Тем не менее IIS действительно невероятно удобная среда для работы. Учитывая выбор, я все равно буду размещать свой веб-сервер в IIS и использовать для этого моно-клиенты linux.

Ответ 6

Во-первых, было сказано, что публикация статистики производительности для сравнения реализаций CLR (.NET vs Mono) невозможна. Я не уверен, что является источником, но команда Mono опубликовала только сравнение версий Mono (1.x, 2.0, 2.2 и 2.4), поэтому я предполагаю, что высказывание является реальным. Таким образом, вы можете тестировать производительность только в своей среде.

Во-вторых, в последнее время Mono развивается намного быстрее, что дает вам возможность повысить производительность просто путем обновления времени выполнения Mono.

В-третьих, пожалуйста, используйте другое отношение, чтобы судить о продукте с открытым исходным кодом. Для продуктов с закрытым исходным кодом вы можете ничего не делать, кроме как попросить своего поставщика повысить производительность или предоставить поддержку в настройке ваших приложений. Для проектов с открытым исходным кодом у вас есть доступ к базе кода, и вы можете адаптировать его в соответствии с вашими потребностями и исправлять проблемы для своих собственных приложений.

Как упоминал jpobst, даже если вы не можете самостоятельно исправить проблемы, вы можете связаться с ребятами из Mono.