Ich hatte das Glück, eine 20-GB-Linode-Instanz mit Ubuntu 64-Bit zu verwenden. Ich möchte versuchen, PostGres für diesen Dienst zu optimieren, weiß aber nicht, welche Prioritäten ich beim Ändern setzen soll.
Ich habe mehrere Datensätze mit ungefähr 20.000 Zeilen und die Berechnungen, die durchgeführt werden, sind speicherintensive Abfragen (räumliche Analysen), wobei nach jeder Anforderung eine kleine Anzahl von Zeilen geschrieben wird. Die Gesamtzahl der Benutzer ist sehr gering (10 - 50).
Ich habe diesen Artikel auf der Postgresql-Website gelesen, weiß aber nicht genug darüber, wie dies funktioniert, um zu wissen, was ich priorisieren sollte. Ich habe mir auch Ratschläge angesehen, was hier für Geo-Arbeiten geändert werden soll.
Zum Beispiel habe ich versucht, das shared_buffers
zu ändern 200MB
(was viel weniger als 75% von 20 GB ist). Dies führte zu der folgenden Fehlermeldung:
- Neustart des PostgreSQL 9.1-Datenbankservers
- Der PostgreSQL-Server konnte nicht gestartet werden. Bitte überprüfen Sie die Protokollausgabe: 2013-03-10 12:21:58 EDT FATAL: Shared Memory-Segment konnte nicht erstellt werden: Ungültiges Argument 2013-03-10 12:21:58 EDT DETAIL: Fehlgeschlagener Systemaufruf war shmget (key = 5432001 , Größe = 47742976, 03600). 2013-03-10 12:21:58 EDT-HINWEIS: Dieser Fehler bedeutet normalerweise, dass die Anforderung von PostgreSQL für ein gemeinsam genutztes Speichersegment den SHMMAX-Parameter Ihres Kernels überschritten hat. Sie können entweder die Anforderungsgröße reduzieren oder den Kernel mit größerem SHMMAX neu konfigurieren. Um die Anforderungsgröße (derzeit 47742976 Byte) zu verringern, reduzieren Sie die Nutzung des gemeinsam genutzten Speichers von PostgreSQL, möglicherweise durch Reduzierung von shared_buffers oder max_connections. Wenn die Anforderungsgröße bereits klein ist, ist sie möglicherweise kleiner als der SHMMIN-Parameter Ihres Kernels. In diesem Fall ist es erforderlich, die Anforderungsgröße zu erhöhen oder SHMMIN neu zu konfigurieren. Die PostgreSQL-Dokumentation enthält weitere Informationen zur Konfiguration des gemeinsam genutzten Speichers.
Ich habe dies auf den ursprünglichen Wert zurückgesetzt und versucht, Folgendes zu ändern:
work_mem = 50MB
maintenance_work_mem = 256MB
Mein Problem ist, dass ich nicht weiß, welche Werte ich ändern soll oder wie ich priorisieren soll, welche Werte der Schlüssel zum Experimentieren und Testen sind. Was muss ich konkret tun, um diese Datenbank zu optimieren?
shared_buffers
. Siehe postgresql.org/docs/current/static/runtime-config-resource.html , postgresql.org/docs/current/static/…