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/…Antworten:
Ich würde die Verwendung
pgtune
von Greg Smith empfehlen .Führen Sie es einfach wie folgt auf Ihrem Server aus:
Es gibt nur wenige weitere Optionen, aber nur das zu tun und generierte zu verwenden,
postgresql.conf
wird Wunder für Ihre Serverleistung bewirken.Ich denke, PostgreSQL sollte dies in die Standardinstallation aufnehmen und sogar standardmäßig ausführen - so dass sich die Leute nicht über schlechte PostgreSQL-Leistung beschweren können.
quelle
SHMMAX
Problem behoben hatte (Lösung hier: askubuntu.com/questions/44373/… ),pgtune
funktionierte es wie ein Zauber.Sie müssen die Einstellungen für shmmax, shmall, msgmax und msgmnb auf Ihrem Server erhöhen. PGTUNE sollte, wie in der anderen Antwort erwähnt, Ihnen sagen, worauf Sie sie einstellen sollen.
Sie können das so machen:
Sie können überprüfen, wie die Werte bereits lauten:
quelle