{"id":55734,"date":"2020-01-27T00:00:00","date_gmt":"2020-01-26T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/highload-andrej-gushhin-zabbix-vysokaya-proizvoditelnost-i-nativnoe-partitsionirovanie"},"modified":"2020-02-18T14:03:52","modified_gmt":"2020-02-18T11:03:52","slug":"highload-andrej-gushhin-zabbix-vysokaya-proizvoditelnost-i-nativnoe-partitsionirovanie","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/highload-andrej-gushhin-zabbix-vysokaya-proizvoditelnost-i-nativnoe-partitsionirovanie","title":{"rendered":"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Wir werden die Funktionsweise von Zabbix mit der TimescaleDB-Datenbank als Backend untersuchen. Wir zeigen, wie man von Grund auf startet und wie man von PostgreSQL migriert. Auch werden wir Vergleichstests der Leistung beider Konfigurationen durchf\u00fchren.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/fb4f7ea4585b6dcdafec9d0d1e3a71e4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHighLoad++ Sibirien 2019. Saal \u201eTomsk\u201c. 24. Juni, 16:00. Thesen und <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/siberia\/2019\/abstracts\/5390\">Pr\u00e4sentation n\u00fctzlich sein.<\/a><\/noindex>. Die n\u00e4chste Konferenz von HighLoad++ findet am 6. und 7. April 2020 in Sankt Petersburg statt. Details und Tickets <noindex><a rel=\"nofollow\" href=\"http:\/\/bit.ly\/2sSxgBx\">\u00fcber den Link<\/a><\/noindex>.<\/p>\n<p><b>Andrej Guschin (im Folgenden \u2013 AG):<\/b> \u2013 Ich bin Ingenieur im technischen Support von ZABBIX (im Folgenden \u2013 \u201eZabbix\u201c), Trainer. Ich arbeite seit \u00fcber 6 Jahren im technischen Support und habe direkt mit Leistungsfragen zu tun. Heute werde ich \u00fcber die Leistung sprechen, die TimescaleDB im Vergleich zu herk\u00f6mmlichem PostgreSQL 10 bieten kann. Auch ein gewisser Einf\u00fchrungsteil \u2013 wie alles funktioniert.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Die Hauptleistungsherausforderungen: von der Datensammlung bis zur Datenbereinigung<\/h3>\n<p>\nLassen Sie uns damit beginnen, dass es bestimmte Leistungsherausforderungen gibt, mit denen jedes \u00dcberwachungssystem konfrontiert ist. Die erste Leistungsherausforderung besteht darin, Daten schnell zu sammeln und zu verarbeiten.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/a2cb78b549a55c3b59d7fcdb8b8865b3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEin effektives \u00dcberwachungssystem muss schnell und zeitgerecht alle Daten empfangen, sie gem\u00e4\u00df Trigger-Ausdr\u00fccken verarbeiten, das hei\u00dft, sie nach bestimmten Kriterien (die in verschiedenen Systemen unterschiedlich sein k\u00f6nnen) bearbeiten und in einer Datenbank speichern, um die Daten sp\u00e4ter nutzen zu k\u00f6nnen.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/a3ce55c3aec3eb93948150684838a5b3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDie zweite Herausforderung f\u00fcr die Leistung ist die Speicherung der Historie. In einer Datenbank Daten zu speichern und schnellen sowie bequemen Zugriff auf diese Metriken zu haben, die \u00fcber einen bestimmten Zeitraum gesammelt wurden, ist von gro\u00dfer Bedeutung. Wichtig ist, dass man diese Daten leicht abrufen kann, um sie in Berichten, Grafiken, Triggern oder bei bestimmten Schwellenwerten f\u00fcr Benachrichtigungen usw. zu verwenden.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/325363d79f0270d620f956eeb8ab3402.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDie dritte Herausforderung f\u00fcr die Leistung besteht darin, die Historie zu bereinigen, d.h. an einem bestimmten Tag m\u00fcssen Sie keine detaillierten Metriken mehr speichern, die \u00fcber 5 Jahre gesammelt wurden (sogar \u00fcber Monate oder zwei Monate). Einige Netzwerk-Knoten wurden entfernt, oder einige Hosts sind nicht mehr erforderlich, da die Metriken veraltet sind und nicht mehr gesammelt werden. All dies muss gel\u00f6scht werden, um zu verhindern, dass Ihre Datenbank unkontrolliert w\u00e4chst. Die Bereinigung der Historie ist zudem oft eine ernsthafte Herausforderung f\u00fcr den Speicher \u2013 sie hat h\u00e4ufig einen erheblichen Einfluss auf die Leistung.<\/p>\n<h3>Wie k\u00f6nnen Cache-Probleme gel\u00f6st werden?<\/h3>\n<p>\nIch werde jetzt konkret \u00fcber Zabbix sprechen. In Zabbix werden die ersten beiden Herausforderungen durch Caching gel\u00f6st.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/d5510b31553ee8e63a0c240789d51622.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDatensammlung und -verarbeitung \u2013 wir verwenden den Arbeitsspeicher, um all diese Daten zu speichern. Im Folgenden wird n\u00e4her auf diese Daten eingegangen.<\/p>\n<p>Au\u00dferdem gibt es auf der Datenbankseite ein gewisses Caching f\u00fcr Hauptabfragen \u2013 f\u00fcr Grafiken und andere Dinge.<\/p>\n<p>Caching auf der Seite des Zabbix-Servers: Wir haben ConfigurationCache, ValueCache, HistoryCache und TrendsCache. Was ist das?<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/241a131145eccd280a7411c43b2cdce4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nConfigurationCache ist der zentrale Cache, in dem wir Metriken, Hosts, Datenelemente und Trigger speichern; alles, was f\u00fcr die Verarbeitung von Preprocessing, Datensammlung, welche Hosts abgerufen werden sollen und mit welcher Frequenz erforderlich ist. All dies wird im ConfigurationCache gespeichert, um nicht die Datenbank zu belasten und unn\u00f6tige Anfragen zu erstellen. Nach dem Start des Servers aktualisieren wir diesen Cache (erstellen ihn) und aktualisieren ihn regelm\u00e4\u00dfig (je nach den Konfigurationseinstellungen).<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/474ac0db2e46aa945a0da62197f72987.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Caching in Zabbix. Datensammlung<\/h3>\n<p>\nHier ist das Schema ziemlich gro\u00df:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/a6ad9dbd5deebac5440433a47c693fcf.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDie Hauptakteure im Schema sind diese Sammler:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/feb932586302e2284bd44595caf9ee1b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas sind die eigentlichen Sammelprozesse, verschiedene \u201ePoller\u201c, die f\u00fcr unterschiedliche Arten von Abfragen zust\u00e4ndig sind. Sie sammeln Daten \u00fcber ICMP, IPMI, verschiedene Protokolle und leiten all dies an das Preprocessing weiter.<\/p>\n<h3>PreProcessing HistoryCache<\/h3>\n<p>\nAu\u00dferdem, wenn wir berechnete Datenelemente haben (wer mit \u201eZabbix\u201c vertraut ist, wei\u00df das), also berechnete, aggregierte Datenelemente, \u2013 holen wir diese direkt aus dem ValueCache. Wie dieser gef\u00fcllt wird, werde ich sp\u00e4ter besprechen. Alle diese Sammler nutzen den ConfigurationCache, um ihre Aufgaben abzurufen und leiten diese dann zum Preprocessing weiter.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/3948ee1167c52856949c25e2043be974.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDie Vorverarbeitung nutzt ebenfalls den ConfigurationCache, um Vorverarbeitungsschritte zu erhalten und verarbeitet diese Daten auf verschiedene Weise. Seit Version 4.2 haben wir das auf einen Proxy ausge lagert. Das ist sehr praktisch, denn die eigentliche Vorverarbeitung ist ein recht ressourcenintensiver Vorgang. Wenn Sie also ein sehr gro\u00dfes \"Zabbix\" mit einer gro\u00dfen Anzahl von Datenelementen und einer hohen Erfassungsfrequenz haben, erleichtert das die Arbeit erheblich.<\/p>\n<p>Nachdem wir diese Daten also irgendwie mit Hilfe der Vorverarbeitung verarbeitet haben, speichern wir sie im HistoryCache, um sie sp\u00e4ter weiter zu verarbeiten. Damit endet die Datenerfassung. Wir gehen zum Hauptprozess \u00fcber.<\/p>\n<h3>Arbeit des History Syncers<\/h3>\n<p>\n<img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/66539e4184d041ed84f797080226ba24.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer zentrale Prozess in \"Zabbix\" (da es eine monolithische Architektur ist) ist der History Syncer. Dies ist der Hauptprozess, der sich mit der atomaren Verarbeitung jedes Datenelements besch\u00e4ftigt, also mit jedem Wert:<\/p>\n<ul>\n<li>Ein Wert kommt an (er holt ihn aus dem HistoryCache);<\/li>\n<li>\u00dcberpr\u00fcft im Configuration Syncer: Gibt es Trigger zur Berechnung? \u2013 Wenn ja, berechnet er sie;<br \/>\nWenn es welche gibt, erstellt er Ereignisse und eine Eskalation, um eine Benachrichtigung zu erstellen, falls dies gem\u00e4\u00df der Konfiguration erforderlich ist;<\/li>\n<li>Es zeichnet Trigger zur sp\u00e4teren Verarbeitung und Aggregation auf. Wenn Sie die letzten Stunden aggregieren und so weiter, speichert dieser Wert den ValueCache, um nicht auf die Historientabelle zugreifen zu m\u00fcssen. Somit wird der ValueCache mit den notwendigen Daten gef\u00fcllt, die f\u00fcr die Berechnung von Triggern, berechneten Elementen usw. erforderlich sind.<\/li>\n<li>Der History-Synchronisierer schreibt dann alle Daten in die Datenbank.<\/li>\n<li>Die Datenbank schreibt sie auf die Festplatte \u2013 damit endet der Verarbeitungsprozess.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Datenbanken. Caching<\/h3>\n<p>\nAuf der DB-Seite, wenn Sie Grafiken oder Berichte zu Ereignissen ansehen m\u00f6chten, gibt es verschiedene Caches. Aber ich werde in diesem Bericht nicht dar\u00fcber sprechen.<\/p>\n<p>F\u00fcr MySQL gibt es den Innodb_buffer_pool und viele andere Caches, die ebenfalls konfiguriert werden k\u00f6nnen.<br \/>\nAber das sind die Hauptpunkte:<\/p>\n<ul>\n<li>shared_buffers;<\/li>\n<li>effective_cache_size;<\/li>\n<li>shared_pool.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/925e7abb21cfaa2516ff2b33ab161dc0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIch habe f\u00fcr alle Datenbanken aufgef\u00fchrt, dass es bestimmte Caches gibt, die es erm\u00f6glichen, die Daten, die h\u00e4ufig f\u00fcr Abfragen ben\u00f6tigt werden, im Arbeitsspeicher zu halten. Dort haben sie ihre eigenen Technologien daf\u00fcr.<\/p>\n<h3>Zur Leistungsf\u00e4higkeit der Datenbank<\/h3>\n<p>\nDementsprechend gibt es ein wettbewerbsintensives Umfeld, das hei\u00dft, der \u00abZabbix\u00bb-Server sammelt Daten und protokolliert sie. Bei einem Neustart liest er auch aus der Historie, um den ValueCache zu f\u00fcllen und so weiter. Dar\u00fcber hinaus k\u00f6nnen Sie Skripte und Berichte haben, die die \u00abZabbix\u00bb-API verwenden, die auf der Webschnittstelle basiert. Die \u00abZabbix\u00bb-API greift auf die Datenbank zu und erh\u00e4lt die ben\u00f6tigten Daten f\u00fcr Diagramme, Berichte oder eine Liste von Ereignissen und letzten Problemen.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/10a55cb1af660aace3172a572bea6692.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEin ebenfalls sehr beliebtes Tool zur Visualisierung ist Grafana, das von unseren Nutzern verwendet wird. Es kann sowohl direkt \u00fcber die \u00abZabbix\u00bb-API als auch \u00fcber die Datenbank verbunden werden. Auch es schafft eine gewisse Konkurrenz in der Datenbeschaffung: Eine feinere, gut konfigurierte Datenbank ist erforderlich, um schnelle Ergebnisse und Tests zu gew\u00e4hrleisten.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/8a008e55dbee5635d386cec2fc1c40f5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Historienbereinigung. In Zabbix gibt es den Housekeeper.<\/h3>\n<p>\nDer dritte Aufruf, der in \u00abZabbix\u00bb verwendet wird, ist die Historienbereinigung mithilfe des Housekeepers. Der \u00abHousekeeper\u00bb h\u00e4lt alle Einstellungen ein, das hei\u00dft, in unseren Datenelementen ist angegeben, wie lange (in Tagen) Daten aufbewahrt werden sollen, wie lange Trends und die Dynamik von \u00c4nderungen gespeichert werden.<\/p>\n<p>Ich habe nicht \u00fcber TrendCash gesprochen, das wir in Echtzeit berechnen: Daten kommen herein, wir aggregieren sie \u00fcber eine Stunde (haupts\u00e4chlich handelt es sich um Zahlen der letzten Stunde), das Durchschnitts- \/ Minimalwert wird ermittelt und einmal pro Stunde in die Tabelle der \u00c4nderungstrends (\u201eTrends\u201c) \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f. \u201eHausmeister\u201c wird gestartet und entfernt \u00fcbliche Daten mit Selects aus der Datenbank, was nicht immer effizient ist.<\/p>\n<p>Wie erkennt man, dass dies ineffizient ist? Sie k\u00f6nnen auf den Leistungsdiagrammen der internen Prozesse folgendes Szenario sehen:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/f413ec989491d4186a05c779978e2f6d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIhr History-Syncer ist st\u00e4ndig besch\u00e4ftigt (rotes Diagramm). Und das \u201eorange\u201c Diagramm, das oben verl\u00e4uft. Das ist der \u201eHausmeister\u201c, der gestartet wird und auf die Datenbank wartet, um alle Zeilen zu l\u00f6schen, die er festgelegt hat.<\/p>\n<p>Nehmen wir eine beliebige Item-ID: Es m\u00fcssen die letzten 5.000 gel\u00f6scht werden; nat\u00fcrlich anhand der Indizes. Doch normalerweise ist der Datensatz recht gro\u00df \u2013 die Datenbank liest das trotzdem von der Festplatte und l\u00e4dt es in den Cache, was eine sehr kostspielige Operation f\u00fcr die Datenbank ist. Je nach ihrer Gr\u00f6\u00dfe kann das zu bestimmten Leistungsproblemen f\u00fchren.<\/p>\n<p>Das Deaktivieren von \u201eHauskeeper\u201c ist ganz einfach \u2013 wir haben die vertraute Web-Oberfl\u00e4che. In den allgemeinen Einstellungen (Administration general) deaktivieren wir die interne Hauswirtschaft f\u00fcr interne Berichte und Trends. Entsprechend verwaltet \u201eHauskeeper\u201c dies nicht mehr:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/c9dc3ca86e7fd0c1229f6b9bc5d31270.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWas k\u00f6nnen Sie als N\u00e4chstes tun? Sie haben deaktiviert, Ihre Grafiken sind nun ausgerichtet... Welche Probleme k\u00f6nnen in diesem Fall auftreten? Was k\u00f6nnte helfen?<\/p>\n<h3>Partitionierung<\/h3>\n<p>\nNormalerweise wird dies auf jeder relationalen Datenbank, die ich aufgelistet habe, auf unterschiedliche Weise konfiguriert. MySQL hat seine eigene Technologie. Aber insgesamt sind sie sehr \u00e4hnlich, wenn wir \u00fcber PostgreSQL 10 und MySQL sprechen. Nat\u00fcrlich gibt es viele interne Unterschiede, wie alles umgesetzt wird und wie sich das auf die Leistung auswirkt. Aber insgesamt f\u00fchrt das Erstellen einer neuen Partition oft auch zu bestimmten Problemen.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/729114d61794314e19383f09ee9b5d61.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJe nach Ihrer Konfiguration (wie viele Daten an einem Tag erzeugt werden), wird normalerweise das Minimum eingestellt \u2013 das ist 1 Tag\/Partition, und f\u00fcr \u201eTrends\u201c, dynamische \u00c4nderungen \u2013 1 Monat\/neue Partition. Dies kann variieren, wenn Sie eine sehr gro\u00dfe Konfiguration haben.<\/p>\n<p>Lassen Sie mich gleich \u00fcber die Gr\u00f6\u00dfen des Setups sprechen: Bis zu 5.000 neue Werte pro Sekunde (sogenannte nvps) gelten als ein kleines Setup. Ein mittleres Setup liegt zwischen 5 und 25 Tausend Werten pro Sekunde. Alles, was dar\u00fcber hinausgeht, sind bereits gro\u00dfe bis sehr gro\u00dfe Installationen, die eine sehr sorgf\u00e4ltige Datenbankkonfiguration erfordern.<\/p>\n<p>Bei sehr gro\u00dfen Installationen kann ein Tag m\u00f6glicherweise nicht optimal sein. Ich habe pers\u00f6nlich MySQL-Partitionen mit 40 Gigabyte pro Tag gesehen (und es k\u00f6nnen noch mehr sein). Das ist eine sehr gro\u00dfe Datenmenge, die zu Problemen f\u00fchren kann. Diese muss reduziert werden.<\/p>\n<h3>Warum ist Partitionierung notwendig?<\/h3>\n<p>\nWas Partitionierung bewirkt, wei\u00df ich denke ich, jeder \u2013 es handelt sich um die Sektorisierung von Tabellen. Oft sind dies separate Dateien auf der Festplatte und span-abfragen. Es w\u00e4hlt in der Regel eine Partition optimierter aus, wenn dies im normalen Partitionierungsprozess enthalten ist.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/4920fb3415733799f0a90b1bc7af0114.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nF\u00fcr \u00abZabbix\u00bb wird das Datenmanagement im Laufe eines Zeitraums, d.h. wir verwenden einen Zeitstempel (eine regul\u00e4re Zahl, die die Zeit seit dem Beginn der Epoche angibt). Sie definieren den Beginn und das Ende des Tages, was dann als Partition dient. Demzufolge, wenn Sie auf Daten von vor zwei Tagen zugreifen, werden diese schneller aus der Datenbank abgerufen, da nur eine Datei in den Cache geladen und bereitgestellt werden muss (statt einer gro\u00dfen Tabelle).<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/f5ee4e0b471eb5ebe701615aa617d66d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nViele Datenbanken beschleunigen auch das Einf\u00fcgen (Insert) in eine Kindtabelle. Ich spreche zwar abstrakt, aber das ist ebenfalls m\u00f6glich. Partitionierung hilft oft.<\/p>\n<h3>Elasticsearch f\u00fcr NoSQL<\/h3>\n<p>\nK\u00fcrzlich, in Version 3.4, haben wir eine L\u00f6sung f\u00fcr NoSQL implementiert. Wir haben die M\u00f6glichkeit hinzugef\u00fcgt, in Elasticsearch zu schreiben. Sie k\u00f6nnen verschiedene Typen ausw\u00e4hlen: entweder Zahlen schreiben oder bestimmte Zeichen; wir haben \u0441\u0442\u0440\u043e\u043aen-\u0442\u0435\u043a\u0441\u0442, Sie k\u00f6nnen Protokolle in Elasticsearch schreiben\u2026 Daher wird auch die Weboberfl\u00e4che auf Elasticsearch zugreifen. Das funktioniert in bestimmten F\u00e4llen hervorragend, ist aber momentan auch nur bedingt nutzbar.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/24fe7d19c9e42474cd786ba59846c18c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>TimescaleDB. Hypertabellen<\/h3>\n<p>\nF\u00fcr 4.4.2 haben wir auf eine Sache geachtet, und zwar auf TimescaleDB. Was ist das? Es handelt sich um eine Erweiterung f\u00fcr PostgreSQL, also hat es eine native PostgreSQL-Schnittstelle. Au\u00dferdem erm\u00f6glicht diese Erweiterung eine deutlich effizientere Verarbeitung von Zeitreihendaten und bietet automatisches Partionieren. So sieht das aus:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/de921f06453476215b6240ab9da6fae1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas ist ein Hypertable \u2013 ein Begriff, der in Timescale verwendet wird. Es handelt sich um eine Hypertabelle, die Sie erstellen, und darin befinden sich Chunks. Chunks sind Partitions, also Kindtabellen, wenn ich mich nicht irre. Das ist wirklich effizient.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/719eb3f5d8c9f57544dfc4010850610c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>TimescaleDB und PostgreSQL<\/h3>\n<p>\nWie die Entwickler von TimescaleDB versichern, verwenden sie einen optimierten Algorithmus zur Verarbeitung von Anfragen, insbesondere bei Inserts, der es erm\u00f6glicht, eine nahezu konstante Leistung bei wachsender Datensatzgr\u00f6\u00dfe beizubehalten. Das bedeutet, dass nach 200 Millionen Zeilen PostgreSQL gew\u00f6hnlich erhebliche Leistungsprobleme bekommt und die Performance praktisch bis auf Null sinkt, w\u00e4hrend Timescale es erm\u00f6glicht, Inserts so effizient wie m\u00f6glich bei beliebiger Datenmenge einzuf\u00fcgen.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/a613d505a9dfe6008551ce981da7b24e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Wie installiert man TimescaleDB? Ganz einfach!<\/h3>\n<p>\nIn der Dokumentation ist beschrieben, dass man Pakete f\u00fcr beliebige\u2026 installieren kann. Es h\u00e4ngt von den offiziellen Paketen von \u201ePostgreSQL\u201c ab. Man kann es auch manuell kompilieren. So kam es, dass ich f\u00fcr die Datenbank kompilieren musste.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/6767927fa92260103d318f9aa70ef5b3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nF\u00fcr \u201eZabbix\u201c aktivieren wir einfach die Erweiterung. Ich denke, diejenigen, die die Erweiterung in \u201ePostgreSQL\u201c genutzt haben, wissen\u2026 Sie aktivieren einfach die Erweiterung und erstellen sie f\u00fcr die \u201eZabbix\u201c-Datenbank, die Sie verwenden.<\/p>\n<p>Und der letzte Schritt\u2026<\/p>\n<h3>TimescaleDB. Migration der Verlaufstabellen<\/h3>\n<p>\nSie m\u00fcssen eine hypertable erstellen. Daf\u00fcr gibt es eine spezielle Funktion \u2013 Create hypertable. Der erste Parameter ist die Tabelle, f\u00fcr die in dieser DB eine hypertable ben\u00f6tigt wird.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/47350f79fd9829c12685c1df8f0ff9a6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas Feld, nach dem die Erstellung erfolgen soll, sowie chunk_time_interval (das ist das Intervall der Chunks (Partitionen), die verwendet werden sollen). 86 400 \u2013 das ist ein Tag. <\/p>\n<p>Parameter migrate_data: Wenn Sie ihn auf true setzen, werden alle aktuellen Daten in die im Voraus erstellten Chunks \u00fcbertragen.<\/p>\n<p>Ich habe migrate_data selbst verwendet \u2013 es dauert eine angemessene Zeit, abh\u00e4ngig von der Gr\u00f6\u00dfe Ihrer Datenbank. Ich hatte \u00fcber ein Terabyte \u2013 die Erstellung dauerte mehr als eine Stunde. In einigen F\u00e4llen habe ich w\u00e4hrend der Tests historische Daten f\u00fcr den Text (history_text) und die Zeichenkette (history_str) gel\u00f6scht, um sie nicht zu migrieren \u2013 sie waren f\u00fcr mich tats\u00e4chlich nicht interessant.<\/p>\n<p>Und das letzte Update, das wir in unserer db_extension machen, ist die Installation von timescaledb, damit die Datenbank und insbesondere unser 'Zabbix' verstehen, dass es eine db_extension gibt. Es aktiviert sie und verwendet die Syntax und Abfragen zur Datenbank korrekt, wobei es bereits die 'Features' nutzt, die f\u00fcr TimescaleDB erforderlich sind.<\/p>\n<h3>Serverkonfiguration<\/h3>\n<p>\nIch habe zwei Server verwendet. Der erste Server ist eine relativ kleine virtuelle Maschine, 20 Prozessoren, 16 Gigabyte RAM. Ich habe darauf PostgreSQL 10.8 eingerichtet:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/990805374a2380a5c645c578404489bd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas Betriebssystem war Debian, das Dateisystem \u2013 xfs. Ich habe minimale Einstellungen vorgenommen, um genau diese Datenbank zu verwenden, abgesehen davon, dass Zabbix selbst verwendet wird. Auf demselben Rechner waren der Zabbix-Server, PostgreSQL und Lastagenten installiert.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/a6efa9ab9cd58f0061d04f13fe31018c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIch habe 50 aktive Agenten verwendet, die LoadableModule nutzen, um schnell verschiedene Ergebnisse zu generieren. Sie haben Zeilen, Zahlen und so weiter erstellt. Ich habe die Datenbank mit einer gro\u00dfen Menge an Daten gef\u00fcllt. Urspr\u00fcnglich enthielt die Konfiguration 5.000 Datenelemente pro Host, wobei jedes Datenelement einen Trigger hatte \u2013 um sicherzustellen, dass es sich um ein echtes Setup handelt. Manchmal sind sogar mehr als ein Trigger erforderlich.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/d5a3c306402e08bf2532eb6203a4aab4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIch habe das Aktualisierungsintervall und die Last dadurch reguliert, dass ich nicht nur 50 Agenten verwendet habe (sondern weitere hinzugef\u00fcgt habe), sondern auch durch dynamische Datenelemente und das Herabsetzen des Aktualisierungsintervalls auf 4 Sekunden.<\/p>\n<h3>Leistungstest. PostgreSQL: 36.000 NVPs<\/h3>\n<p>\nDer erste Start, das erste Setup war auf einem frischen PostgreSQL 10 auf dieser Hardware (35.000 Werte pro Sekunde). Insgesamt, wie auf dem Bildschirm zu sehen ist, dauert das Einf\u00fcgen von Daten Bruchteile von Sekunden \u2013 alles ist gut und schnell, SSDs (200 Gigabyte). Einziger Nachteil ist, dass 20 GB recht schnell gef\u00fcllt sind.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/6803a64fedd26093b9117a036d2993ae.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs wird noch viele solcher Diagramme geben. Das ist das Standard-Performance-Dashboard des Zabbix-Servers.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/081cc11c6bf42db3f8f16b6cc4e6ee0c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDas erste Diagramm zeigt die Anzahl der Werte pro Sekunde (blau, oben links), in diesem Fall 35.000 Werte. Oben in der Mitte sehen Sie die Auslastung der Build-Prozesse, und oben rechts die Auslastung der internen Prozesse: history syncers und der housekeeper, der hier (unten in der Mitte) eine angemessene Zeit lang durchgef\u00fchrt wurde.<\/p>\n<p>Dieses Diagramm (unten in der Mitte) zeigt die Nutzung von ValueCache \u2013 wie viele Hits ValueCache f\u00fcr Trigger generiert (einige Tausend Werte pro Sekunde). Ein weiterer wichtiger Graph ist der vierte (unten links), der die Nutzung des HistoryCache zeigt, den ich bereits erw\u00e4hnt habe; dies ist ein Puffer vor der Einspeisung in die Datenbank.<\/p>\n<h3>Leistungstest. PostgreSQL: 50.000 NVPs<\/h3>\n<p>\nAnschlie\u00dfend habe ich die Last auf 50.000 Werte pro Sekunde auf derselben Hardware erh\u00f6ht. Bei der Auslastung durch den 'Housekeeper' wurden 10.000 Werte bereits in 2-3 Sekunden geschrieben, einschlie\u00dflich der Berechnung. Dies wird im n\u00e4chsten Screenshot angezeigt:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/80824da986dbee2f8d5ebe0ead4fbcfd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer \u00abHousekeeper\u00bb beginnt bereits, die Arbeit zu st\u00f6ren, aber insgesamt liegt die Auslastung der History-Synchronisierer noch bei 60 % (drittes Diagramm, oben rechts). Der HistoryCache wird bereits w\u00e4hrend des Betriebs des \u00abHousekeepers\u00bb aktiv gef\u00fcllt (unten links). Er betrug etwa ein halbes Gigabyte und wurde zu 20 % gef\u00fcllt.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/9e1bcd4f3b9f3e8a1c9a36b2083ec61b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Leistungstest. PostgreSQL: 80.000 NVPs<\/h3>\n<p>\nIch habe auf 80.000 Werte pro Sekunde erh\u00f6ht:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/13ae1589d6b9d35b4dda9c6c7d989cc2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEs waren etwa 400.000 Datenelemente und 280.000 Trigger. Die Einf\u00fcgeoperation hatte, wie Sie sehen, eine ziemlich hohe Auslastung der History-Synchronisierer (es waren 30 St\u00fcck). Danach habe ich verschiedene Parameter erh\u00f6ht: History-Synchronisierer, Cache\u2026 Auf dieser Hardware begann die Auslastung der History-Synchronisierer, nahezu das Maximum zu erreichen \u2013 entsprechend war der HistoryCache sehr hoch ausgelastet:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/0ec528256c8fa7b16e1c7c95c8119535.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nW\u00e4hrend dieser Zeit habe ich alle Systemeinstellungen \u00fcberwacht (wie die Nutzung des Prozessors und des Arbeitsspeichers) und festgestellt, dass die Festplattenauslastung maximal war \u2013 ich habe die maximalen M\u00f6glichkeiten dieser Festplatte auf dieser Hardware und dieser virtuellen Maschine erreicht. Bei dieser Intensit\u00e4t begann PostgreSQL, Daten sehr aktiv zu speichern, und die Festplatte konnte mit dem Schreiben und Lesen nicht mithalten...<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/0809dbd7638e7ee003ea24c611984a0c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIch habe einen anderen Server verwendet, der bereits \u00fcber 48 CPUs und 128 Gigabyte RAM verf\u00fcgte:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/53410b502a4574aac5d40f1a2a6d3f42.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAuch habe ich ihn aufger\u00fcstet \u2013 ich habe 60 History Syncer installiert und konnte eine akzeptable Leistung erreichen. Faktisch sind wir nicht 'in der Reserve', aber das ist wahrscheinlich das Limit der Leistung, wo man etwas unternehmen muss.<\/p>\n<h3>Leistungstest. TimescaleDB: 80.000 NVPs<\/h3>\n<p>\nMeine Hauptaufgabe war die Nutzung von TimescaleDB. Auf jedem Diagramm ist ein R\u00fcckgang zu sehen:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/b0064068895a34b93b5aa6771aba05cb.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDiese Ausf\u00e4lle betreffen die Datenmigration. Danach hat sich im Zabbix-Server das Profil f\u00fcr den Datenlademodus der History-Synchronisierer, wie Sie sehen, erheblich ver\u00e4ndert. Es erm\u00f6glicht, Daten fast dreimal schneller einzuf\u00fcgen und erfordert weniger HistoryCache \u2013 folglich werden Ihre Daten zeitgerecht bereitgestellt. Wiederum 80.000 Werte pro Sekunde sind eine recht hohe Rate (nat\u00fcrlich nicht f\u00fcr Yandex). Insgesamt ist das ein recht umfangreiches Setup mit einem Server.<\/p>\n<h3>Leistungstest von PostgreSQL: 120.000 NVPs<\/h3>\n<p>\nDanach habe ich die Anzahl der Datenelemente auf eine halbe Million erh\u00f6ht und einen gesch\u00e4tzten Wert von 125.000 pro Sekunde erreicht:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/7d0cf2ef7c6691c1bbf4b90afd34e4bb.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUnd ich erhielt solche Grafiken:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/9c09333a50e016921a8a5b70e00397a1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIm Prinzip ist dies ein funktionsf\u00e4higes Setup, das relativ lange betrieben werden kann. Da ich jedoch nur eine Festplatte mit 1,5 Terabyte hatte, war diese in ein paar Tagen aufgebraucht. Am wichtigsten ist, dass gleichzeitig neue Partitionen in TimescaleDB erstellt wurden, und das geschah f\u00fcr die Leistung vollkommen unmerklich, was man von MySQL nicht sagen kann.<\/p>\n<p>In der Regel werden Partitionen nachts erstellt, da dies das Einf\u00fcgen und Arbeiten mit Tabellen blockiert und zu einer Serviceverschlechterung f\u00fchren kann. In diesem Fall ist das jedoch nicht so! Die Hauptaufgabe war es, die M\u00f6glichkeiten von TimescaleDB zu \u00fcberpr\u00fcfen. Das Ergebnis war beeindruckend: 120 Tausend Werte pro Sekunde.<\/p>\n<p>Es gibt auch Beispiele in der \u00abCommunity\u00bb:<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/66aa6b1d4c559d12082e4d91b6a1ca10.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEine Person aktivierte ebenfalls TimescaleDB, und die IO-Nutzung fiel auf der CPU; auch die Nutzung interner Prozesse wurde verringert, dank der Aktivierung von TimescaleDB. Dabei handelt es sich um gew\u00f6hnliche Festplatten, das hei\u00dft, eine normale virtuelle Maschine auf herk\u00f6mmlichen Festplatten (keine SSD)!<\/p>\n<p>F\u00fcr kleinere Setups, die an die Diskleistung sto\u00dfen, scheint mir TimescaleDB eine sehr gute L\u00f6sung zu sein. Es erlaubt, weiterhin zu arbeiten, bevor auf leistungsst\u00e4rkere Hardware f\u00fcr die Datenbank migriert wird.<\/p>\n<p>Ich lade euch alle zu unseren Veranstaltungen ein: Conference \u2013 in Moskau, Summit \u2013 in Riga. Nutzt unsere Kan\u00e4le \u2013 \u00abTelegram\u00bb, Forum, IRC. Wenn ihr Fragen habt \u2013 kommt zu unserem Stand, wir k\u00f6nnen \u00fcber alles sprechen.<\/p>\n<h3>Fragen aus dem Publikum<\/h3>\n<p>\nFrage aus dem Publikum (im Folgenden \u2013 A): \u2013 Wenn TimescaleDB so einfach einzurichten ist und einen so gro\u00dfen Leistungsschub bietet, w\u00e4re es dann vielleicht sinnvoll, dies als Best Practice f\u00fcr die Konfiguration von Zabbix mit PostgreSQL zu verwenden? Gibt es versteckte Fallstricke oder Nachteile bei dieser L\u00f6sung, oder kann ich, wenn ich Zabbix einrichten m\u00f6chte, einfach PostgreSQL verwenden, Timescale sofort installieren, es nutzen und mir keine Sorgen um irgendwelche Probleme machen?<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/314845a019724806283a957b15d857cc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>AG:<\/b> \u2013 Ja, ich w\u00fcrde sagen, das ist eine gute Empfehlung: Verwenden Sie PostgreSQL sofort mit der Erweiterung TimescaleDB. Wie bereits erw\u00e4hnt, gibt es zahlreiche positive R\u00fcckmeldungen, obwohl dieses \u201eFeature\u201c experimentell ist. Tats\u00e4chlich zeigen die Tests, dass dies eine hervorragende L\u00f6sung (mit TimescaleDB) ist, und ich glaube, dass es sich weiterentwickeln wird! Wir beobachten die Entwicklung dieser Erweiterung und werden n\u00f6tige Anpassungen vornehmen.<\/p>\n<p>Selbst w\u00e4hrend der Entwicklung haben wir uns auf eine ihrer bekannten \"Funktionen\" verlassen: Man konnte mit Chunks etwas anders umgehen. Aber dann haben sie das im n\u00e4chsten Release entfernt, und wir mussten uns nicht mehr auf diesen Code st\u00fctzen. Ich w\u00fcrde empfehlen, diese L\u00f6sung in vielen Setups zu verwenden. Wenn Sie MySQL benutzen... Funktioniert bei mittleren Setups jede L\u00f6sung ziemlich gut.<\/p>\n<p><b>A:<\/b> \u2013 Auf den letzten Diagrammen, die von der Community stammen, gab es ein Diagramm mit dem \"Hausmeister\":<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/d01549b6b9b97d8bdf5372efe05d9039.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEr hat weitergearbeitet. Was macht der \"Hausmeister\" im Falle von TimescaleDB?<\/p>\n<p><b>AG:<\/b> \u2013 Im Moment kann ich nicht genau sagen \u2013 ich werde mir den Code ansehen und ausf\u00fchrlicher berichten. Er verwendet Anfragen speziell von TimescaleDB nicht zum Entfernen von Chunks, sondern aggregiert sie auf eine andere Weise. Bis jetzt bin ich nicht bereit, diese technische Frage zu beantworten. Am Stand kl\u00e4ren wir das heute oder morgen.<\/p>\n<p><b>A:<\/b> \u2013 Ich habe eine \u00e4hnliche Frage \u2013 zur Leistungsf\u00e4higkeit der L\u00f6schoperation in \"Timescale\".<br \/>\nA (Antwort aus dem Publikum): \u2013 Wenn Sie Daten aus einer Tabelle l\u00f6schen, m\u00fcssen Sie, wenn Sie dies \u00fcber delete tun, die Tabelle durchgehen \u2013 l\u00f6schen, bereinigen, alles f\u00fcr zuk\u00fcnftiges Vakuum kennzeichnen. In \u201eTimescale\u201c, da Sie Chunks haben, k\u00f6nnen Sie sie einfach abwerfen. Grob gesagt, sagen Sie einfach zu der Datei, die in den Big Data liegt: \u201eL\u00f6schen!\u201c<\/p>\n<p>\u201eTimescale\u201c versteht einfach, dass es diesen Chunk nicht mehr gibt. Und da es in den Abfrageplaner integriert ist, erkennt es Ihre Bedingungen in SELECT oder anderen Operationen und versteht sofort, dass dieser Chunk nicht mehr existiert \u2013 \u201eIch gehe da nicht mehr hin!\u201c (Daten sind nicht vorhanden). Das hei\u00dft, der Scan der Tabelle wird durch das L\u00f6schen der Bin\u00e4rdatei ersetzt, weshalb es schnell ist.<\/p>\n<p><b>A:<\/b> \u2013 Wir hatten bereits das Thema NoSQL angesprochen. Soweit ich verstehe, muss \u201eZabbix\u201c nicht wirklich Daten modifizieren, sondern es handelt sich eher um eine Art Protokoll. Kann man spezialisierte Datenbanken verwenden, die ihre Daten nicht \u00e4ndern k\u00f6nnen, aber viel schneller speichern, sammeln und bereitstellen \u2013 Clickhouse, zum Beispiel, oder etwas Kafka-artiges?.. Kafka \u2013 das ist ja auch ein Protokoll! Kann man diese irgendwie integrieren?<\/p>\n<p><b>AG:<\/b> \u2013 Es gibt eine M\u00f6glichkeit, Daten zu exportieren. Ab Version 3.4 haben wir eine spezielle Funktion: Sie k\u00f6nnen alle historischen Dateien, Events und alles andere in Dateien schreiben und anschlie\u00dfend mit einem bestimmten Verarbeiter in jede andere Datenbank senden. Tats\u00e4chlich machen viele das und schreiben direkt in die Datenbank. Die History-Synchronisierungen schreiben all dies in Echtzeit in Dateien, rotieren diese Dateien und so weiter, und das k\u00f6nnen Sie in \"ClickHouse\" \u00fcbertragen. Ich kann nichts zu den Pl\u00e4nen sagen, aber m\u00f6glicherweise wird die Unterst\u00fctzung von NoSQL-L\u00f6sungen wie \"ClickHouse\" weitergehen.<\/p>\n<p><b>A:<\/b> \u2013 Im Grunde genommen kann man Postgres komplett loswerden?<\/p>\n<p><b>AG:<\/b> \u2013 Nat\u00fcrlich, der schwierigste Teil in \"Zabbix\" sind die historischen Tabellen, die die meisten Probleme verursachen und die Events. Wenn Sie in diesem Fall die Events nicht lange speichern und die historische Trenddaten in einem anderen schnellen Speicher aufbewahren, sollten insgesamt keine Probleme auftreten.<\/p>\n<p><b>A:<\/b> \u2013 K\u00f6nnen Sie einsch\u00e4tzen, wie viel schneller alles funktioniert, wenn man auf \"ClickHouse\" umsteigt, sagen wir?<\/p>\n<p><b>AG:<\/b> \u2013 Ich habe das nicht getestet. Ich denke, dass man zumindest vergleichbare Ergebnisse relativ einfach erzielen kann, da ClickHouse seine eigene Oberfl\u00e4che hat. Eine definitive Aussage kann ich jedoch nicht treffen. Besser w\u00e4re es, einen Test durchzuf\u00fchren. Alles h\u00e4ngt von der Konfiguration ab: wie viele Hosts Sie haben und so weiter. Einf\u00fcgen ist die eine Sache, aber die Daten m\u00fcssen auch abgerufen werden \u2013 sei es mit Grafana oder einem anderen Tool.<\/p>\n<p><b>A:<\/b> \u2013 Geht es also um einen fairen Wettkampf und nicht um einen gro\u00dfen Vorteil dieser schnellen Datenbanken?<\/p>\n<p><b>AG:<\/b> \u2013 Ich denke, wenn wir integriert haben, werden die Tests genauer sein.<\/p>\n<p><b>A:<\/b> \u2013 Und wo ist das gute alte RRD geblieben? Was hat dazu gef\u00fchrt, dass wir auf SQL-Datenbanken umgestiegen sind? Urspr\u00fcnglich wurden doch alle Metriken auf RRD gesammelt.<\/p>\n<p><b>AG:<\/b> \u2013 In Zabbix gab es RRD, vielleicht in einer sehr alten Version. SQL-Datenbanken waren immer der klassische Ansatz. Der klassische Ansatz sind MySQL und PostgreSQL (die gibt es schon seit sehr langer Zeit). Wir haben praktisch nie die gemeinsame Schnittstelle f\u00fcr SQL-Datenbanken und RRD verwendet.<\/p>\n<p><img decoding=\"async\" alt=\"HighLoad++, Andrey Gushchin (Zabbix): hohe Leistung und natives Partitionieren.\" src=\"\/wp-content\/uploads\/2020\/01\/ac5f02494c63983601cc09c0b22e722b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<center><div class=\"youtube-placeholder\" data-id=\"umRk94j5M8o\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/umRk94j5M8o\/hqdefault.jpg\" alt=\"Video abspielen\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<h3>Ein wenig Werbung \ud83d\ude42<\/h3>\n<p>\nDanke, dass Sie bei uns bleiben. Gefallen Ihnen unsere Artikel? M\u00f6chten Sie mehr interessante Inhalte sehen? Unterst\u00fctzen Sie uns, indem Sie eine Bestellung aufgeben oder uns Ihren Freunden empfehlen. <noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/cloudvps\/nl\">Cloud-VPS f\u00fcr Entwickler ab 4,99 $<\/a><\/noindex>, <b>eine einzigartige Alternative zu Einsteiger-Servern, die wir f\u00fcr Sie entwickelt haben:<\/b> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/347386\/\">Alles \u00fcber VPS (KVM) E5-2697 v3 (6 Kerne) 10GB DDR4 480GB SSD 1Gbps ab 19 $ oder wie man einen Server richtig teilt?<\/a><\/noindex> (Verf\u00fcgbar sind Optionen mit RAID1 und RAID10, bis zu 24 Kerne und bis zu 40GB DDR4).<\/p>\n<p><b>Dell R730xd im Equinix Tier IV Rechenzentrum in Amsterdam zum halben Preis?<\/b> Nur bei uns <b><noindex><a rel=\"nofollow\" href=\"https:\/\/ua-hosting.company\/serversnl\">2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TB ab 199 $<\/a><\/noindex> in den Niederlanden! <b>Dell R420 \u2014 2x E5-2430 2.2GHz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB \u2014 ab 99 $!<\/b><\/b> Lesen Sie dar\u00fcber <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/company\/ua-hosting\/blog\/329618\/\">Wie man eine Unternehmenskosten-Infrastruktur mit Dell R730xd E5-2650 v4-Servern f\u00fcr ein paar Euro aufbaut?<\/a><\/noindex><br \/>\n<br \/>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/ua-hosting\/blog\/485470\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0443 Zabbix \u0441 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 TimescaleDB \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 backend. \u041f\u043e\u043a\u0430\u0436\u0435\u043c, \u043a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441 \u043d\u0443\u043b\u044f \u0438 \u043a\u0430\u043a \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 PostgreSQL. \u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u0432\u0443\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439. HighLoad++ Siberia 2019. \u0417\u0430\u043b \u00ab\u0422\u043e\u043c\u0441\u043a\u00bb. 24 \u0438\u044e\u043d\u044f, 16:00. \u0422\u0435\u0437\u0438\u0441\u044b \u0438 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u044f. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f HighLoad++ \u043f\u0440\u043e\u0439\u0434\u0435\u0442 6 \u0438 7 \u0430\u043f\u0440\u0435\u043b\u044f 2020 \u0433\u043e\u0434\u0430 \u0432 \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0438 \u0431\u0438\u043b\u0435\u0442\u044b \u043f\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-55734","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0443 Zabbix \u0441 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 TimescaleDB \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 backend. \u041f\u043e\u043a\u0430\u0436\u0435\u043c, \u043a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441 \u043d\u0443\u043b\u044f \u0438 \u043a\u0430\u043a \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 PostgreSQL. \u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u0432\u0443\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439. HighLoad++ Siberia 2019. \u0417\u0430\u043b \u00ab\u0422\u043e\u043c\u0441\u043a\u00bb. 24 \u0438\u044e\u043d\u044f, 16:00. \u0422\u0435\u0437\u0438\u0441\u044b \u0438 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u044f. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f HighLoad++ \u043f\u0440\u043e\u0439\u0434\u0435\u0442 6 \u0438 7 \u0430\u043f\u0440\u0435\u043b\u044f 2020 \u0433\u043e\u0434\u0430 \u0432 \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0438 \u0431\u0438\u043b\u0435\u0442\u044b \u043f\u043e\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/highload-andrej-gushhin-zabbix-vysokaya-proizvoditelnost-i-nativnoe-partitsionirovanie\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47HighLoad++, \u0410\u043d\u0434\u0440\u0435\u0439 \u0413\u0443\u0449\u0438\u043d (Zabbix): \u0432\u044b\u0441\u043e\u043a\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0443 Zabbix \u0441 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 TimescaleDB \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 backend. \u041f\u043e\u043a\u0430\u0436\u0435\u043c, \u043a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441 \u043d\u0443\u043b\u044f \u0438 \u043a\u0430\u043a \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 PostgreSQL. \u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u0432\u0443\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439. HighLoad++ Siberia 2019. \u0417\u0430\u043b \u00ab\u0422\u043e\u043c\u0441\u043a\u00bb. 24 \u0438\u044e\u043d\u044f, 16:00. \u0422\u0435\u0437\u0438\u0441\u044b \u0438 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u044f. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f HighLoad++ \u043f\u0440\u043e\u0439\u0434\u0435\u0442 6 \u0438 7 \u0430\u043f\u0440\u0435\u043b\u044f 2020 \u0433\u043e\u0434\u0430 \u0432 \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0438 \u0431\u0438\u043b\u0435\u0442\u044b \u043f\u043e\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/highload-andrej-gushhin-zabbix-vysokaya-proizvoditelnost-i-nativnoe-partitsionirovanie\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-01-26T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:03:52+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47HighLoad++, Andrei Guschin (Zabbix): hohe Leistung und natives Partitioning | ProHoster","description":"Wir werden die Integration von Zabbix mit der TimescaleDB als Backend untersuchen. Wir zeigen, wie man von Grund auf neu startet und wie man von PostgreSQL migriert. Au\u00dferdem pr\u00e4sentieren wir Vergleichstests zur Leistung der beiden Konfigurationen. HighLoad++ Sibirien 2019. Saal \u201eTomsk\u201c. 24. Juni, 16:00 Uhr. Thesen und Pr\u00e4sentation. Die n\u00e4chste HighLoad++ Konferenz findet am 6. und 7. April 2020 in Sankt Petersburg statt. Details und Tickets unter","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/highload-andrej-gushhin-zabbix-vysokaya-proizvoditelnost-i-nativnoe-partitsionirovanie","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47HighLoad++, \u0410\u043d\u0434\u0440\u0435\u0439 \u0413\u0443\u0449\u0438\u043d (Zabbix): \u0432\u044b\u0441\u043e\u043a\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 | ProHoster","og:description":"\u041c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0443 Zabbix \u0441 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 TimescaleDB \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 backend. \u041f\u043e\u043a\u0430\u0436\u0435\u043c, \u043a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441 \u043d\u0443\u043b\u044f \u0438 \u043a\u0430\u043a \u043c\u0438\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 PostgreSQL. \u0422\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u0432\u0443\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439. HighLoad++ Siberia 2019. \u0417\u0430\u043b \u00ab\u0422\u043e\u043c\u0441\u043a\u00bb. 24 \u0438\u044e\u043d\u044f, 16:00. \u0422\u0435\u0437\u0438\u0441\u044b \u0438 \u043f\u0440\u0435\u0437\u0435\u043d\u0442\u0430\u0446\u0438\u044f. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u044f HighLoad++ \u043f\u0440\u043e\u0439\u0434\u0435\u0442 6 \u0438 7 \u0430\u043f\u0440\u0435\u043b\u044f 2020 \u0433\u043e\u0434\u0430 \u0432 \u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0438 \u0431\u0438\u043b\u0435\u0442\u044b \u043f\u043e","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/highload-andrej-gushhin-zabbix-vysokaya-proizvoditelnost-i-nativnoe-partitsionirovanie","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-01-26T21:00:00+00:00","article:modified_time":"2020-02-18T11:03:52+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"55734","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:37:39","updated":"2022-09-28 01:51:35"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/55734","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=55734"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/55734\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=55734"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=55734"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=55734"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}