Оптимизирующий производительность Oracle 10g на сервере, который также является сервером приложений Tomcat JSP?
Я унаследовал простую 5 - 64-битную платформу RedHat.
Он имеет диски SCSI на RAID1 с 16 ГБ оперативной памяти. Двухъядерный процессор.
Oracle 10g, выпуск 2.
Возможно, это будет достойной платформой для запуска только БД, но тот же сервер в кластерном режиме "AA" (очень простой) также запускает Tomcat, и на нем работает несколько Java-сервлетов.
К сожалению, нет платформы для кэширования и т. Д. Мы используем только внешний CDN для некоторого кэширования html.
Я лично больше знаком с веб-средами на платформе LAMPP (apache, php, mysql, postgresql).
ПРОБЛЕМА. Поскольку на сервере одновременно работают Tomcat JSP/Java и Oracle 10g без кеширования, у меня возникают некоторые проблемы с отключением сервера. Часто, к сожалению.
ВОПРОС: Какие у меня варианты с точки зрения повышения производительности всех этих разных приложений?
Пул подключений? Например, в мире Postgresql у нас есть PgBouncer, который действительно помогает. Есть ли у Oracle что-то подобное? Или существует знаменитый внешний пул на основе Java, который люди используют в производственных средах? (Я не знаком с Java)
Любой "кеш SQL", как в мире MySQL и Postgresql?
Любой другой вид кеша приложений, как "APC" или "eAccelarator" в мире PHP?
Материал "OSCache" из мира Java (вещь, которую я нашел в Google: http://onjava.com/pub/a/onjava/2005/01/05/jspcache.html?page=2)
...
Что-то еще?
Извините, если это нубский вопрос. Я гуглил и гуглял, но проблема в том, что я не знаю, что искать, кроме общих общих понятий выше. Так что если бы не полные ответы, я был бы даже признателен за основные советы, и я счастлив сам JFGI.
Спасибо!
2 ответа
Я полагаю, что Tomcat предоставляет несколько вариантов для пула соединений, хотя StackOverflow может быть лучшим местом для обсуждения этих возможностей.
В остальном:
Узкие места Oracle и настройка производительности - это широкая и сложная область, и то же самое касается приложений J2EE, контейнеров и кэширования.
Существует ряд коммерческих инструментов и инструментов с открытым исходным кодом, которые должны быть полезны, некоторые из них имеют большое значение как для выявления возможных проблем, так и для обучения пользователя. Одним из таких коммерческих инструментов является Spotlight на Oracle от Quest Software. Quest также предоставляет Performasure, который я считаю отличным решением для диагностики приложений низкого уровня. http://www.quest.com/
Oracle предоставляет множество бесплатной документации для своей платформы баз данных на http://docs.oracle.com/ и http://tahiti.oracle.com/ включая книги по вопросам производительности и настройки.
Аналогичным образом, в IBM Red Series включены бесплатные книги, посвященные настройке производительности и узким местам, связанным с чем угодно, от Oracle, J2EE, Linux, хранилищ до общих систем проектирования. http://www.redbooks.ibm.com/
Настройка производительности Oracle Database 10g: советы и методы, хотя и не бесплатная, но и Oracle Essentials: Oracle Database 10g, если вам нужно лучше понять основы баз данных Oracle. Вы можете прочитать оба онлайн на http://www.safaribooks.com/ и я верю, что они предлагают бесплатную пробную версию.
Хорошее место для начала, или, по крайней мере, такое же хорошее, как и любое другое, - это выяснить, какие системные ресурсы загружаются и кто их использует. Высокая загрузка процессора? Если это так, это вызвано ожиданием ввода-вывода? Как используется память, вызывает ли ее недостаток дополнительный ввод / вывод? Нагрузка процессора приложения или базы данных? Связан ли процессор рабочей нагрузки базы данных или ввод-вывод? Неустойчивость связана с производительностью или могут быть другие проблемы в системе. Ответы на несколько фундаментальных вопросов, по крайней мере, помогут вам в этом.
Вы должны убедиться, что Tomcat JRE работает в режиме сервера (не клиента). Это должно отображаться при запуске и не всегда должно быть дано. Это должно быть равным шагом к использованию eAccellerator в PHP-мире - сервлеты компилируются при загрузке.
Соединение соединений очевидно необходимо. Я не думаю, что есть большой шанс получить приложение без объединения. Но лучше проверь это. Е
В веб-приложениях я всегда получал большие улучшения, добавляя HTTP-заголовок (Pragma cache, Expires) для обеспечения кеширования статических элементов.
Если вы способны изменить программирование, всегда полезно посмотреть на SQL-планы (объяснение)... это часто показывало мне, где я пропускаю индексы.
И реализация кеширования часто используемых элементов, конечно...
Другой возможностью поиска может быть увеличение кучи Tomcat (-Xmx....) - возможно, это помогает, если Tomcat не хватает памяти и запускает сборку мусора.
Что именно ты имеешь в виду под "спуском"? Сервер работает медленно или дает сбой?