LINUX.ORG.RU
ФорумAdmin

Postgresql, многоядерность.

 , , ,


2

4

Всем привет. Поставил Postgresql для 1С. Запустил туда большую конфу с большой базой. До этого все крутилось на оффтопSQL. При попытке даже 1 клиента что-то делать, работает очень медленно. В htop вижу, что висит процесс postgresql с SELECT и жрет 100% одного ядра. Этого явно не достаточно. Почему так происходит? И почему postgres не использует все ядра? Спасибо.

1 запрос == 1 поток. Если ты запустишь 10 запросов, будет 10 потоков и 10 ядер.

vurdalak ★★★★★
()

Смотря на чем висит процесс если на ожидании I/O то какая разница сколько у тебя ядер.

Spinel
()
Ответ на: комментарий от zmitrok62

а вот чудесный вопрос. я даже запросил бы пруф с 1 жирненьким селектом, который распараллелится.

SevikL ★★★★★
()
Ответ на: комментарий от zmitrok62

а я и не спорю. как параллелить то? если на 100 процентов грузит, то либо ждать, либо руки из задницы пересаживать и переписывать запрос.

SevikL ★★★★★
()
Ответ на: комментарий от turtle_bazon

Ну немного. Сейчас занимаюсь конкретно. Из-за не настроенной памяти могут быть траблы описанные мной в начале поста?

zmitrok62
() автор топика

ммммм. а кто-нибудь ваще переписывал БД под MT ? :)

darkenshvein ★★★★★
()

А постгря с патчами от 1С?

PaRuSoft ★★★★
()

Сделай этот же селект, только руками, будет разница ?
Еще как вариант тупит винт, посмотри может идет ребилд массива или есть битые сектора, пройдись викторией.

edyard
()

Версия PostgreSQL (1C-патченая?)? Версия платформы? Разрядность? Что за конфигурация и какой объем БД? Какое железо? Тест Гилёва на сервере проводили?

exorcist
()
Последнее исправление: exorcist (всего исправлений: 1)

Вот еще можете попробовать потюнить сам PostgreSQL. Но этот скрипт у меня рассчитан на сервер, где крутиться один PostgreSQL, сам кластер 1С на соседнем работает.

exorcist
()
Ответ на: комментарий от abc

Нужно профайлером посмотреть что за запросы бегут на сервер

абсолютно бесполезно, увидев хоть раз запрос 1С сразу хочется их развидеть...

LOG: duration: 15998.049 ms statement: DELETE FROM _CRgActP657 WHERE EXISTS( SELECT 1 FROM (SELECT 1 AS SDBL_DUMMY) SDBL_DUAL INNER JOIN (SELECT T4._RecorderTRef AS RecorderTRef, T4._RecorderRRef AS RecorderRRef, T4._LineNo AS LineNo_ FROM _CRgActP657 T4 INNER JOIN tt2967 T5 ON T4._RecorderTRef = T5._RecorderTRef AND T4._RecorderRRef = T5._RecorderRRef AND T4._LineNo = T5._LineNo LIMIT 100000) T3 ON _CRgActP657._RecorderTRef = T3.RecorderTRef AND _CRgActP657._RecorderRRef = T3.RecorderRRef AND _CRgActP657._LineNo = T3.LineNo_ WHERE _CRgActP657._RecorderTRef = T3.RecorderTRef AND _CRgActP657._RecorderRRef = T3.RecorderRRef AND _CRgActP657._LineNo = T3.LineNo_)

и это еще не самый страшный... причем как заметно выполнялся 16сек, после установки серверного ключа выполняется намного быстрее.

anonymous2 ★★★★★
()
Ответ на: комментарий от anonymous2

для проверки скорости можно запускать тест гилева, как уже много раз писалось на всяких 1С ресурсах: 1С гоняет большие объемы не оптимизированных данных в памяти, так что берите процессор ++3.5Гц + память DDR4-2100 и выше и 40 попугаев вам будет обеспечено.

anonymous2 ★★★★★
()
Последнее исправление: anonymous2 (всего исправлений: 1)
Ответ на: комментарий от zmitrok62

С дефолтной установкой у меня, насколько помню, тоже еле шевелилось.

turtle_bazon ★★★★★
()
Ответ на: комментарий от exorcist

postgreSQL с сайта 1С, 8.3.6, x64, Конфигурация почти самопал, размер .dt файла 110 Гб, Железо - 2x6 ядер Xeon (какой точно не скажу, но не старый), все стоит на 10 аппаратном RAID.

zmitrok62
() автор топика
Ответ на: комментарий от Yustas

Все скопом. Но проц в простое, память свободна, диск в простое. По этому мануалу произвел настройку. Разница есть, но не большая. Все равно все очень медленно. Запользовал pgtune - так же, разницы почти никакой. При любом тыке в интерфейс С-ки в процессах висит SELECT и жрет одно ядро в 100%

zmitrok62
() автор топика
Ответ на: комментарий от zmitrok62

При любом тыке в интерфейс С-ки в процессах висит SELECT и жрет одно ядро в 100%

Блжад. Неужели сложно сделать explain analyze?

anonymous
()
Ответ на: комментарий от Yustas

Ключ по сети раздает другая машина. Процессов 1с приложения? Я один сейчас сижу, по разному от 2 до ~20

zmitrok62
() автор топика
Ответ на: комментарий от zmitrok62

Ключ по сети раздает другая машина.

Ключ серверный может быть установлен только локально.
В сервер со всем этим добром HASP воткнут?
Программных лицензий на него раньше не было.

Yustas ★★★★
()
Ответ на: комментарий от zmitrok62

Тогда там у тебя ОДИН рабочй процесс.
А учитывая что 8.3 не даёт регулировать рабочие потоки, ещё и ОДИН рабочий поток.
Втыкай ключ.

Yustas ★★★★
()
Ответ на: комментарий от Yustas

Если будет ключ, будет несколько рабочих процессов, соотв будет несколько процессов которые будут инициировать несколько одновременных запросов в БД? Где можно почитать о том, что Вы говорите? Про процесс и поток?

zmitrok62
() автор топика
Ответ на: комментарий от zmitrok62

Я не знаю как туда USB прокидывать, на XEN'е 8.2 сервер работал нормально.

Yustas ★★★★
()
Ответ на: комментарий от zmitrok62

Если будет ключ, будет несколько рабочих процессов, соотв будет несколько процессов которые будут инициировать несколько одновременных запросов в БД?

Вестимо, да.
Не стоит забывать, что 1С пилят, в первую очередь под M$SQL, с грехом-пополам переводя это на pg, и полуая в результате откровенную наркоманию в запросах.

Где можно почитать о том, что Вы говорите? Про процесс и поток?

Я читал кучу мелких источников, в том числе гилёва, мисту и вот тут кастовал вопросы.
Думаю, поиск в любимом se по запросу «сервер 1с процесс поток linux» поможет сориентироваться.

Yustas ★★★★
()
Ответ на: комментарий от Yustas

Торговля но переделанная на 90%. T-SQL вроде не использовали.

zmitrok62
() автор топика

Была похожая проблема. Возможно проц не на полную работает. Попробуй CPU frequency scaling на performance переключить. В убунте пакет cpufrequtils.

bsa
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.