PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

KESALAHAN:kehabisan memori pada mesin dengan RAM 32GB dan tanpa file swap

Jika saya membaca output top Anda dengan benar, itu tidak diambil pada saat Anda kehabisan memori.

Kesalahan sebenarnya tampak baik-baik saja - itu tidak meminta sejumlah besar memori jadi mungkin mesin kehabisan memori pada saat itu.

Mari kita lihat sekilas setelan Anda:

max_connections = 1000                  # (change requires restart)
work_mem = 40MB                         # min 64kB

Jadi - Anda berpendapat bahwa Anda dapat mendukung 1000 kueri bersamaan masing-masing menggunakan katakanlah 10 + 40MB (beberapa mungkin menggunakan kelipatan 40MB tetapi mari kita masuk akal). Jadi - ini menunjukkan kepada saya bahwa mesin Anda memiliki> 500 core dan katakanlah 100GB RAM. Bukan itu masalahnya.

Jadi - ambil jumlah inti Anda dan gandakan - itu nilai yang masuk akal untuk jumlah koneksi maksimal. Itu akan memungkinkan Anda satu kueri pada setiap inti sementara yang lain menunggu I/O. Kemudian, tempatkan connection pooler di depan DB jika perlu (pgbouncer / connection pooling Java).

Kemudian, Anda bahkan dapat mempertimbangkan untuk menambah work_mem jika perlu.

Oh - sangat masuk akal untuk dijalankan tanpa mengaktifkan swap. Setelah Anda mulai bertukar, Anda tetap berada di dunia yang menyakitkan sehubungan dengan penggunaan basis data.

Sunting:perluas di work_mem vs dibagikan

Jika ragu, selalu lihat dokumentasi .

shared_buffers value adalah, seperti namanya, dibagikan di antara backend. work_mem tidak hanya per backend, itu sebenarnya per sort. Jadi - satu kueri mungkin menggunakan tiga atau empat kali jumlah itu jika melakukan pengurutan pada tiga subkueri.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara memperbarui stempel waktu secara otomatis di PostgreSQL

  2. Cara terbaik untuk menyimpan waktu di atas 24:00:00 di postgresql?

  3. Tabel bergabung dengan sql ke rel permintaan rekaman aktif

  4. Menggunakan npgsql 12 dan ef 6 bersama - adakah yang berhasil melakukannya?

  5. PostGIS - konversi multipoligon ke poligon tunggal