Мы обновляем наш сервер базы данных, и у меня возникла странная проблема с производительностью.
Наш старый сервер представляет собой двухпроцессорную систему с 8 ядрами и 4 ГБ ОЗУ, работает под управлением Win2k3 R2 Standard (32-разрядная версия), MS SQL Server 2005 и SOLR 4.2, работающего на Tomcat 7.0.37, все на Java 6u22. Мы используем драйвер MS SQL JDBC 3.0 для запуска DIH для импорта наших записей в solr. Этот процесс импорта занимает примерно 4,5 часа.
Наш новый сервер представляет собой двухпроцессорную систему с 16 ядрами и 32 ГБ оперативной памяти, работающую под управлением Win2k12 Standard (64-разрядная версия), MS SQL Server 2008 R2 и SOLR 4.2, работающего на Tomcat 7.0.39, все на Java 7u17. Я использовал тот же драйвер MS SQL JDBC 3.0 для запуска DIH. Процесс импорта занял более 8 часов.
В настоящее время я запускаю тест импорта с использованием драйвера MSSQL JDBC 4.0, но если статус соответствует тому, что я вижу сейчас, это также займет 7-8 часов.
Может ли кто-нибудь помочь мне выяснить эту аномалию производительности и исправить ее? В идеале я бы ожидал, что процесс импорта сократится (у сервера больше ресурсов, поэтому он должен), но я бы согласился на такую же скорость.
Спасибо.
Я обнаружил, что процесс импорта сильно замедляется. Это была одна, может быть, две из 10 дочерних сущностей и их соответствующие запросы. Из 10 только эти 2 не использовали CachedSqlEntityProcessor. Хотя, когда я попытался переделать, чтобы разрешить кеширование, у меня закончились исключения памяти. Это те же запросы, что и на старом сервере, поэтому я не уверен, почему он действительно замедлился на новом сервере.
Решил переделать весь процесс. Я решил, что лучше будет импортировать предварительно обработанные файлы, чем выполнять индивидуальные подзапросы. Итак, я создал хранимую процедуру для bcp, чтобы использовать ее для экспорта всего, что мне было нужно, в виде файла XML в формате, готовом для импорта с включенным useSolrAddSchema.
Экспорт bcp занимает примерно 20 минут, а для dih с использованием FileDataSource требуется еще 5.
Так что в итоге я доволен своим ростом производительности. Они начали с 10+ часов на Solr 1.3 на нашем старом сервере, с обновлением до Sol 4.2 я смог сократить его до 4,5 часов, а теперь с новым сервером он сократился примерно до 25 минут. Я бы назвал это пока победой.