====== チューニング ====== ===== system ===== 現状 # ipcs -M shminfo: shmmax: 33554432 (max shared memory segment size) shmmin: 1 (min shared memory segment size) shmmni: 192 (max number of shared memory identifiers) shmseg: 128 (max shared memory segments per process) shmall: 8192 (max amount of shared memory in pages) または # sysctl -a | grep kern.ipc kern.ipc.maxsockbuf: 262144 kern.ipc.sockbuf_waste_factor: 8 kern.ipc.somaxconn: ...... kern.ipc.msgseg: 2048 kern.ipc.msgssz: 8 kern.ipc.msgtql: 40 kern.ipc.msgmnb: 2048 kern.ipc.msgmni: 40 kern.ipc.msgmax: 16384 kern.ipc.semaem: 16384 kern.ipc.semvmx: 32767 kern.ipc.semusz: 136 kern.ipc.semume: 10 kern.ipc.semopm: 100 kern.ipc.semmsl: 60 kern.ipc.semmnu: 30 kern.ipc.semmns: 60 kern.ipc.semmni: 10 kern.ipc.semmap: 30 ...... To allow many simultaneous connections to your PostgreSQL server, you should raise the SystemV shared memory limits in your kernel. Here are example values for allowing up to 180 clients (configurations in postgresql.conf also needed, of course): options SYSVSHM options SYSVSEM options SYSVMSG options SHMMAXPGS=65536 options SEMMNI=40 options SEMMNS=240 options SEMUME=40 options SEMMNU=120 shmmaxが32M(33554432/1024/1024)。これを増加させる。 /etc/sysctl.confに以下を記述。((shmmax:512M=(536870912/1024/1024)とした))((shmall:131072=536870912/4096)) kern.ipc.shmmax=536870912 kern.ipc.shmall=131072 /boot/loader.confに以下の記述をして、セマフォ関係もDefaultの5倍くらいにしておく kern.ipc.semmni=50 kern.ipc.semmns=300 kern.ipc.semmnu=150 ===== 共有バッファ ===== /usr/local/pgsql/data/postgresql.conf ((DB専用サーバであれば総メモリの 25% 程度が良いとされている)) shared_buffers = 28MB # min 128kB   ↓ shared_buffers = 256MB # min 128kB ===== コネクション ===== /usr/local/pgsql/data/postgresql.conf ((同時接続数。WEB など、多数の同時アクセスが想定されるのであれば大きく、バッチ処理など同時アクセス数が少ない環境では小さくする。)) max_connections = 48   ↓ max_connections = 128 ===== トランザクションログバッファ ===== /usr/local/pgsql/data/postgresql.conf #wal_buffers = 64kB # min 32kB   ↓ #wal_buffers = 256kB # min 32kB ===== 設定を見る ===== showコマンド SHOW all; |...| |max_connections|128|Sets the maximum number of concurrent connections.| |max_files_per_process|1000|Sets the maximum number of simultaneously open files for each server process.| |max_function_args|100|Shows the maximum number of function arguments.| |max_identifier_length|63|Shows the maximum identifier length.| |...| または SHOW max_connections; 128 ===== 現在のコネクション数を調べる ===== SELECT datname, usename, COUNT(*) FROM pg_stat_activity GROUP BY datname, usename; ===== 参考 ===== * [[https://www.fujitsu.com/jp/products/software/resources/feature-stories/postgres/article-index/tuningrule9-introduction/|パフォーマンスチューニング9つの技]] * [[https://qiita.com/cuzic/items/f9b846e6171a54079d77|PostgreSQL のパフォーマンスチューニング]]