Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / pgbouncer настройка / 21 сообщений из 21, страница 1 из 1
20.05.2020, 18:14
    #39960002
Alex_Wong
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pgbouncer настройка
Добрый день.
На старом железе тестовая система: centos8, nginx, php-fpm, postgresql-12, pgbouncer.
Последний не получается настроить. Скрипт php такой:

...
$dsn = "host=127.0.0.1 port=6432 dbname=postgres user=postgres password=***"; // 1. так работает
$dsn = "host=/var/run/pgbouncer port=6432 dbname=postgres user=postgres password=***"; // 2. не работает

$conn = pg_connect($dsn);
//-------------------------------------------------------------------------------------------------------------------------------------------
$t02 = (microtime(true) - $start_time)*1000;

if ($d00 !== 'upd') {

$in1 = pg_query($conn, "INSERT INTO public.v1_bouncer (metka) VALUES ('".$d00."') RETURNING idv1;");
$t03 = (microtime(true) - $start_time)*1000;
$rid = pg_fetch_row($in1);
$t22 = $t02-$t01;
$in2 = pg_query($conn, "INSERT INTO public.v2_timing (fk_idv1, t01, t02, t03) VALUES ($rid[0],$t01,$t22,$t03-$t02);");
$t04 = (microtime(true) - $start_time)*1000;
$tt = $t04-$t03;
echo '{"0":"'.$d00.'", "1":"'.$tt.'", "2":"'.$rid[0].'", "3":"'.$t22.'"}';
//-------------------------------------------------------------------------------------------------------------------------------------------
...

Первый вариант строки подключения - работает. В базу складывает тайминги: время на установление коннекта ~ 60ms.
Второй вариант: через сокет - не работает. Менял конфиг баунсера, права .. походу накосячил больше. Текущий конфиг:

- - -

[databases]
postgres=host=127.0.0.1 port=5432 dbname=postgres user=postgres password=***

- - -

[]# ls -la /var/run/postgresql/
итого 4
drwxr-xr-x 2 postgres postgres 80 мая 20 11:32 .
drwxr-xr-x 48 root root 1380 мая 20 11:34 ..
srwxrwxrwx 1 postgres postgres 0 мая 20 17:20 .s.PGSQL.5432
-rw------- 1 postgres postgres 64 мая 20 17:20 .s.PGSQL.5432.lock
[]#

---------------------------+--------------------------------------------------------+------------
job_name | pgbouncer | no
conffile | /etc/pgbouncer/pgbouncer.ini | yes
logfile | /var/log/pgbouncer/pgbouncer.log | yes
pidfile | /var/run/pgbouncer/pgbouncer.pid | no
listen_addr | 127.0.0.1 | no
listen_port | 6432 | no
so_reuseport | 0 | no
listen_backlog | 128 | no
unix_socket_dir | /var/run/pgbouncer | no
unix_socket_mode | 511 | no
unix_socket_group | | no
auth_type | plain | yes
auth_file | /etc/pgbouncer/userlist.txt | yes
auth_hba_file | | yes
auth_user | | yes
auth_query | SELECT usename, passwd FROM pg_shadow WHERE usename=$1 | yes
pool_mode | transaction | yes
max_client_conn | 100 | yes
default_pool_size | 20 | yes
min_pool_size | 0 | yes
reserve_pool_size | 0 | yes
reserve_pool_timeout | 5 | yes
max_db_connections | 0 | yes
max_user_connections | 0 | yes
syslog | 0 | yes
syslog_facility | daemon | yes
syslog_ident | pgbouncer | yes
user | | no
autodb_idle_timeout | 3600 | yes
server_reset_query | DISCARD ALL | yes
server_reset_query_always | 0 | yes
server_check_query | select 1 | yes
server_check_delay | 30 | yes
server_fast_close | 0 | yes
query_timeout | 0 | yes
query_wait_timeout | 120 | yes
client_idle_timeout | 0 | yes
client_login_timeout | 60 | yes
idle_transaction_timeout | 0 | yes
server_lifetime | 3600 | yes
server_idle_timeout | 600 | yes
server_connect_timeout | 15 | yes
server_login_retry | 15 | yes
server_round_robin | 0 | yes
suspend_timeout | 10 | yes
ignore_startup_parameters | | yes
disable_pqexec | 0 | no
dns_max_ttl | 15 | yes
dns_nxdomain_ttl | 15 | yes
dns_zone_check_period | 0 | yes
resolv_conf | | no
max_packet_size | 2147483647 | yes
pkt_buf | 4096 | no
sbuf_loopcnt | 5 | yes
tcp_defer_accept | 1 | yes
tcp_socket_buffer | 0 | yes
tcp_keepalive | 1 | yes
tcp_keepcnt | 0 | yes
tcp_keepidle | 0 | yes
tcp_keepintvl | 0 | yes
verbose | 0 | yes
admin_users | postgres, eax | yes
stats_users | postgres | yes
stats_period | 60 | yes
log_stats | 1 | yes
log_connections | 1 | yes
log_disconnections | 1 | yes
log_pooler_errors | 1 | yes
application_name_add_host | 0 | yes
client_tls_sslmode | disable | no
client_tls_ca_file | | no
client_tls_cert_file | | no
client_tls_key_file | | no
client_tls_protocols | all | no
client_tls_ciphers | fast | no
client_tls_dheparams | auto | no
client_tls_ecdhcurve | auto | no
server_tls_sslmode | disable | no
server_tls_ca_file | | no
server_tls_cert_file | | no
server_tls_key_file | | no
server_tls_protocols | all | no
server_tls_ciphers | fast | no
- - -

Будет ли выигрыш, если сделать и postgres и pgbouncer на сокетах? Подскажите как правильно, плиз.
...
Рейтинг: 0 / 0
20.05.2020, 19:38
    #39960059
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pgbouncer настройка
Alex_Wong
Будет ли выигрыш, если сделать и postgres и pgbouncer на сокетах?

Пара процентов на CPU если у вас тысяч 30 запросов в секунду.

Конкретизируйте это своё "не работает".
...
Рейтинг: 0 / 0
20.05.2020, 20:56
    #39960098
Alex_Wong
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pgbouncer настройка
Melkij,
не работает - не пишет в базу, как при первой $dsn строке,
log php:
...
"PHP message: PHP Warning: pg_connect(): Unable to connect to PostgreSQL server: could not connect to server: Not a directory
Is the server running locally and accepting
- - -
т.е. в принципе уйти от накладных в ~60ms на установку конекта не получится, - это норма? Спасибо.
...
Рейтинг: 0 / 0
20.05.2020, 21:02
    #39960104
Alex_Wong
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pgbouncer настройка
Melkij,
ещё такая строка в логе:
connections on Unix domain socket "/var/run/pgbouncer/.s.PGSQL.6432/.s.PGSQL.6432"? in /web/sites/mysite.com
...
Рейтинг: 0 / 0
20.05.2020, 21:15
    #39960111
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pgbouncer настройка
Alex_Wong
"PHP message: PHP Warning: pg_connect(): Unable to connect to PostgreSQL server: could not connect to server: Not a directory
Is the server running locally and accepting

Ну?
Вы проверили? Существует такая директория? Там файл сокета есть?
...
Рейтинг: 0 / 0
20.05.2020, 21:23
    #39960112
Alex_Wong
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pgbouncer настройка
Melkij,
в папке var/run/pgbouncer два файла:
pgbouncer.pid _ 6 байт
.s.PGSQL.6432 _ 0 байт
...
Рейтинг: 0 / 0
20.05.2020, 21:26
    #39960113
Alex_Wong
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pgbouncer настройка
Alex_Wong,
"/var/run/pgbouncer/.s.PGSQL.6432/.s.PGSQL.6432"
не пойму, два раза?
...
Рейтинг: 0 / 0
20.05.2020, 21:43
    #39960114
Alex_Wong
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pgbouncer настройка
Alex_Wong,
изменил строку (убрал port):
$dsn = "host=/var/run/pgbouncer port=6432 dbname=postgres user=postgres password=***";

сделал так:
$dsn = "host=/var/run/pgbouncer dbname=postgres user=postgres password=***";

не работает, но уже ошибка в логе такая:
connections on Unix domain socket "/var/run/pgbouncer/.s.PGSQL.5432"?

т.е. .s.PGSQL.5432
вместо .s.PGSQL.6432
...
Рейтинг: 0 / 0
23.05.2020, 12:34
    #39961013
Alex_Wong
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pgbouncer настройка
Alex_Wong,
- - -
поменял в /etc/pgbouncer/pgbouncer.ini
на:
unix_socket_dir = /tmp
pidfile = /tmp/pgbouncer.pid
- - -
строку подключения в php коде сменил с
$dsn = "host=/var/run/pgbouncer dbname=postgres user=postgres password=***";
на:
$dsn = "host=/tmp port=6432 dbname=postgres user=postgres password=***";
- - -
Теперь в php_логе пишет:
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.6432"?

Что и как можно ещё проверить? Thanks.
...
Рейтинг: 0 / 0
23.05.2020, 14:53
    #39961043
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pgbouncer настройка
Alex_Wong,


1)файл /tmp/.s.PGSQL.6432 есть?
2)pgbouncer рестартовали после смены unix_socket_dir ?
...
Рейтинг: 0 / 0
23.05.2020, 15:23
    #39961047
Alex_Wong
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pgbouncer настройка
Maxim Boguk,
1. Да, такой файл есть, собственно, как и для случая c /var/run/pgbouncer (там тоже был)
здесь, с /tmp повторилась та-же ситуация ...
2. через stop / start : systemctl stop pgbouncer

нашёл такое:
reddit.com/r/PostgreSQL/comments/c1u690/trouble_connecting_to_pgbouncer_by_unix_sockets/
типа:
A pgbouncer to postgresql group, ran "chmod g+7 /var/run/postgresql", changed pgbouncer.ini to use /var/run/postgresql

не знаю мой ли это случай, но так понял, что надо вместо моих двух попыток с:
/var/run/pgbouncer
и
/tmp
- - -
делать так:
/var/run/postgresql
?
...
Рейтинг: 0 / 0
23.05.2020, 15:56
    #39961052
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pgbouncer настройка
Alex_Wong,

А вы через psql -h /tmp -p 6432 -U postgres при запуске от пользователя от которого php работает можете соединится с базой?
...
Рейтинг: 0 / 0
23.05.2020, 16:03
    #39961054
Alex_Wong
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pgbouncer настройка
Maxim Boguk,

начал делать через /var/run/postgresql
сейчас верну на /tmp
и по-пробую ..
...
Рейтинг: 0 / 0
23.05.2020, 16:23
    #39961062
Alex_Wong
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pgbouncer настройка
Maxim Boguk,
- - -
так, откатил на:
/tmp
перезапустил, вижу, что создались два файла:
/tmp/pgbouncer.pid (содержимое - номер, который совпадает с тем, что показывает systemctl status pgbouncer)
/tmp/.s.PGSQL.6432 (пустой)
- - -
набрал в терминале:
#psql -h /tmp -p 6432 -U postgres
ввёл пароль пользователя postgres, получил
postgres=#

- - -
при запуске от пользователя от которого php работает - не уверен, что в этом разобрался ...
...
Рейтинг: 0 / 0
23.05.2020, 16:28
    #39961064
Alex_Wong
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pgbouncer настройка
Alex_Wong,
- - -
postgres=# \conninfo
Вы подключены к базе данных "postgres" как пользователь "postgres" через сокет в "/tmp", порт "6432".
postgres=#
...
Рейтинг: 0 / 0
23.05.2020, 17:19
    #39961089
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pgbouncer настройка
Alex_Wong
Alex_Wong,
- - -
postgres=# \conninfo
Вы подключены к базе данных "postgres" как пользователь "postgres" через сокет в "/tmp", порт "6432".
postgres=#


судя по
Теперь в php_логе пишет:
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.6432"?

соединяется оно куда надо... а вот почему его туда не пускает...

1)от какого пользователя у вас php-fpm работает?
2)вы точно от этого пользователя psql успешно запустили а не от postgres или root или еще кого?
3)у вас SELinux не включен? (а то там через политики такого можно назапрещать что рад не будешь)

в общем это не к базе вопрос вообще... а к настройкам вашей системы... позовите опытного сисадмина в помощь... который strace хотя бы умеет.
...
Рейтинг: 0 / 0
23.05.2020, 17:50
    #39961102
Alex_Wong
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pgbouncer настройка
Maxim Boguk,
- - -
3. SELinux не включен
по первым двум вопросам, Вы правы, - нет уверенности ..
да, я на базу не грешу, это понятно,
странно, что с $dsn = "host=127.0.0.1 port 6432 ..." - работает,
а вот так:
$dsn = "host=/tmp port 6432 ..." - уже нет,
- - -
спасибо.
...
Рейтинг: 0 / 0
23.05.2020, 18:26
    #39961118
Alex_Wong
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pgbouncer настройка
Maxim Boguk,
- - -
1)от какого пользователя у вас php-fpm работает?
-
nginx
...
Рейтинг: 0 / 0
23.05.2020, 18:42
    #39961123
Alex_Wong
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pgbouncer настройка
Maxim Boguk,
- - -
[root@mgm toor]# ps -ef | fgrep php-fpm
root 1225 1 0 16:45 ? 00:00:00 php-fpm: master process (/etc/opt/remi/php74/php-fpm.conf)
nginx 1296 1225 0 16:45 ? 00:00:00 php-fpm: pool www
nginx 1297 1225 0 16:45 ? 00:00:00 php-fpm: pool www
nginx 1299 1225 0 16:45 ? 00:00:00 php-fpm: pool www
root 14776 9957 0 18:39 pts/0 00:00:00 grep -F --color=auto php-fpm
[root@mgm toor]#
- - -
...
Рейтинг: 0 / 0
23.05.2020, 19:28
    #39961148
Alex_Wong
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pgbouncer настройка
Maxim Boguk,
- - -
2)вы точно от этого пользователя psql успешно запустили а не от postgres или root или еще кого?
- - -
$ sudo -u nginx psql -h /tmp -p 6432 -U postgres
пароль: ввёл пароль для postgres
could not change directory to "/home/hook": Отказано в доступе
Password for user postgres:
psql (12.2)
Type "help" for help.

postgres=#
- - -
...
Рейтинг: 0 / 0
24.05.2020, 18:29
    #39961383
Alex_Wong
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pgbouncer настройка
Maxim Boguk,
-
добрый день, создал группу и поместил туда пользователя, от которого работает php-fpm, т.е. nginx
добавил в эту группу текущего пользователя папки и дал этой новой группе права на папку (home/hook)
-
так и не заработало, в логе: /var/log/pgbouncer.log
когда запускаю: $ sudo -u nginx psql -h /tmp -p 6432 -U postgres
пишет такое:

2020-05-24 18:05:50.405 EEST [1235] LOG C-0x557be8493e70: postgres/postgres@unix(10737):6432 login attempt: db=postgres user=postgres tls=no

2020-05-24 18:05:50.406 EEST [1235] LOG C-0x557be8493e70: postgres/postgres@unix(10737):6432 closing because: client unexpected eof (age=0s)

2020-05-24 18:05:56.238 EEST [1235] LOG C-0x557be8493e70: postgres/postgres@unix(10737):6432 login attempt: db=postgres user=postgres tls=no

2020-05-24 18:06:33.708 EEST [1235] LOG stats: 0 xacts/s, 0 queries/s, in 0 B/s, out 0 B/s, xact 0 us, query 0 us, wait 0 us

2020-05-24 18:07:00.545 EEST [1235] LOG C-0x557be8493e70: postgres/postgres@unix(10737):6432 closing because: client close request (age=64s)

последняя строчка лога появляется, когда делаю выход:
postgres=# \q
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / pgbouncer настройка / 21 сообщений из 21, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]