PgBouncer слишком много клиентских подключений для select () - PullRequest
0 голосов
/ 13 марта 2020

Я создал PostgreSql v12 (port 5432) и pgbouncer v1.9 (port 6432). Затем я создал новую тестовую базу данных на сервере pgbouncer. Я выполнил следующие действия:

  1. pgbench -h localhost -p 6432 -U postgres -i -s 150 test
    

    он создал таблицы pgbench.

  2. pgbench -p 6432 -U postgres -c 200 -j 2 -P 60 -t 1000 -d test
    

    если я использую -c 85, он запустится без ошибок. Когда я увеличиваю -c до 85 или 90, я получаю too many client connections for select().

  3. Я настроил pgbouncer.ini и postgresql.conf файлы. На pgbouncer я добавил

    test = host=localhost port=5432 dbname=test & pool_mode = transaction,max_client_conn = 10000, default_pool_size = 20
    

    в postgresql.conf Я увеличил max_connections со 100 до 1000 и shared_buffers с 128 до 256 МБ.

    PgBouncer.ini
    Cmd ss
    PgBouncer
    postgres .conf
    дБ

Я бы хотел пылесосить эту базу данных более чем с 100 клиентами.

1 Ответ

0 голосов
/ 13 марта 2020

если я использую - c 85, он будет работать без ошибок. Когда я увеличиваю - c до более чем 85 или 90, я получаю слишком много клиентских подключений для select ().

Текст "слишком много клиентских подключений для select ()" появляется в pgbench клиента, а не на postgresql сервере или pgbouncer (что я могу найти, они могут быть собраны из небольших строк). Так что все, что происходит, происходит внутри pgbench. Но неясно, что это на самом деле, так как команде, которую вы показываете, определенно не нужно больше 1024 файловых дескрипторов.

Зачем вообще вставлять pgbouncer в это? Если вы хотите, чтобы все соединения были открыты и использовались одновременно, pgbouncer не может вам ничего предложить. Появляется ли та же ошибка, если вы указываете pgbench непосредственно на базу данных?

Я бы хотел пылесосить эту базу данных более чем с 100 клиентами.

Почему?

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