У нас есть веб-приложение CF8, которое может работать в двух режимах: база данных или статический файл. При большой нагрузке режим Database out заметно работает в режиме Staticfile. И я пытаюсь понять, почему.
Сначала немного контекста:
Мы используем Solaris Zones и Oracle; ColdFusion 8, 32-разрядная версия, с JRun 4
В режиме базы данных все данные получаются с внешнего сервера базы данных под управлением Oracle 10g.
В статическом файловом режиме все данные, необходимые для работы приложения, заранее генерируются из БД, помещаются на веб-сервер, на котором запущен CF, и вызываются через CFINCLUDE.
Во время нагрузочного теста, когда виртуальные пользователи повторно выполняют определенные действия, в режиме БД мы смогли запустить 31600 сеансов (в таблице CDATA), а в статическом файле - 25900 сеансов. Это в течение 60 минут. Среднее время выполнения итерации (вход в систему, выполнение действия, выход из системы) в режиме БД составляет 22 секунды, а в режиме статического файла - 33 секунды. Максимальное использование кучи java составляло ~ 800 МБ в режиме БД, ~ 700 МБ в режиме статических файлов.
Вот почему я ожидал, что статический файл будет лучше:
Есть идеи, почему это может быть? Где я могу посмотреть (или попросить соответствующих администраторов - БД, ОС, приложение) посмотреть, почему это может быть?
Спасибо!
Км
Скорее всего, это потому, что вы экономите на задержке доступа к дискам. СУБД Oracle будет хранить все, что может, в буферном кеше, поэтому вы можете делать очень мало доступа к диску, кроме как в самом начале. Вам также придется сравнить относительную скорость дисковых подсистем. Компании будут тратить много средств на быстрый дисковый массив для сервера БД, но не на сервер приложений.