Was ich durch die Teilnahme am ISUCON10-Qualifying gelernt habe

Ich habe an ISUCON10 teilgenommen

Ich bin mit meinem Kollegen ToshihitoKon als Power-In-Team mit viel Glück zu Isucon10 gekommen. Der Ursprung des Namens ist das innere Ringmaterial, das für eine Weile in der Firma beliebt war w

Ich konnte letztes Jahr nicht am ersten Jahr meines neuen Absolventen teilnehmen, weil ich zu beschäftigt mit der Arbeit war, also konnte ich mir im zweiten Jahr etwas leisten und ich werde dieses Jahr teilnehmen! Also habe ich versucht, am Krieg teilzunehmen. Die erste ISUCON!

Wir haben eine Legende, die die ISUCON mehrmals gewonnen hat und Fragen hat, aber wenn möglich, möchte ich mich mit Mitgliedern des gleichen Levels zusammenschließen, um meine Position zu erfahren. Deshalb habe ich mich entschieden, Toshihito Kon als Teammitglied zu verwenden. Ich lud dich ein. Ich hatte viele Möglichkeiten, zusammenzuarbeiten. In diesem Sinne war es einfach zu kommunizieren und es hat Spaß gemacht.

ToshihitoKon hatte eine starke Infrastruktur, also fragte ich nach der Infrastruktur und fuhr mit der Aufteilung der Rollen fort, die der Anwendung gewidmet waren. Die verwendete Sprache ist Go.

Bis zum Tag

Ich habe das ISUCON9-Qualifying optimiert, indem ich es auf dem lokalen Docker meines Mac ausgeführt habe. http://isucon.net/archives/53805209.html

Ich habe mir auch die Blogs angesehen, die in der Vergangenheit hohe Punktzahlen erzielt haben, und die Strategie als Referenz verwendet. https://to-hutohu.com/2019/09/09/isucon9-qual/#%E5%BD%93%E6%97%A5

Infolgedessen dachte ich, dass ich mit der Verwendung von alp`` pt-query-Digest nicht sehr vertraut bin und Nginx nicht verstehe. Deshalb habe ich versucht, das Zugriffsprotokoll und das langsame Abfrageprotokoll mit ISUCON9 als Betreff zu analysieren. Ich habe es getan.

Danach bereiten Sie mit dem Standard Wettbewerb erstellen das Git-Repository im Voraus vor und so weiter.

Persönlich habe ich Nginx nicht genug verstanden, also habe ich die folgenden Bücher gelesen. Es war sehr hilfreich. Einführung in die Nginx-Praxis WEB + DB PRESS plus nginx

In den vergangenen Fragen zum Isucon9-Qualifying konnte ich fast 10.000 Punkte sammeln, also entschied ich mich für den Tag. Ich war am Tag zuvor bei Toshihito Kon und hatte eine Kundgebung auf einer Pizza-Party, und ich konnte mich wie ein Festival fühlen, lol

An dem Tag

ToshihitoKon konnte die Infrastruktureinstellungen reibungslos abschließen, sodass ich mich auf die Optimierung der App konzentrieren konnte. ToshihitoKon kümmert sich um die DB-Einstellungen und mehrere Gerätekonfigurationen und optimiert die App.

Ich habe hier eine Punktzahl von ungefähr 650, aber seitdem ist es träge ... Bei anderen Teams schien es, als müssten wir den kritischen Engpass beseitigen.

Ich dachte, dass es zwei Optionen gibt, die Ablaufverfolgung, um die Suche oder das Zwischenspeichern im Speicher zu beschleunigen. Deshalb habe ich das im Voraus untersuchte Zwischenspeichern im Speicher ausprobiert, aber ich konnte die Fehler nicht vollständig beseitigen und sie nicht einführen. ... Es tut mir Leid!

Infolgedessen beendete ich mit ungefähr 650 Punkten.

Versuche mitzumachen

Lesen Sie den Kommentar

http://isucon.net/archives/55025156.html Als ich mir die Kommentare ansah, hielt ich es für wichtig, die Suche durch Nachverfolgung zu beschleunigen.

Außerdem konnte ich mir nur eine Strategie vorstellen, um die Suche auf der Anwendungsseite zu implementieren, indem die Stelle, an der die Suche kompliziert ist, in einen On-Memory-Cache umgewandelt wird. Es gab jedoch auch eine Möglichkeit, einen Index für alle Suchbedingungen normalerweise zu erstellen.

index Ich fand es nicht gut, es in die dunklen Wolken zu legen, aber ich hätte es einmal versuchen sollen, bevor ich eine Entscheidung traf. Raten Sie nicht nur, messen Sie es.

Ich kannte auch das Problem, dass der Index aufgrund der Sortierung in absteigender und aufsteigender Reihenfolge nicht funktioniert, aber es ist sehr viel besser, eine neue Spalte hinzuzufügen, um dies zu beheben! ist geworden.

Ich bemerkte auch, dass die Geschwindigkeit des Masseneinfügens erhöht wurde, aber ich habe nicht so oft darauf zugegriffen, wie ich das Protokoll gesehen habe, also habe ich es verlassen. Sobald der Engpass behoben ist, wird dies möglicherweise als nächstes zu einem Problem.

Lernen

Wenn ich normalerweise arbeite, habe ich viel Arbeit, die näher an der Anwendung liegt, und ich musste die Nginx-Einstellungen nicht von Grund auf neu schreiben. Daher finde ich es sehr gut, dass ich durch die Teilnahme an ISUCON viel Wissen über die Infrastruktur erworben habe. Ich werde!

Außerdem verbringe ich in meinem aktuellen Job eine überwältigende Zeit damit, Code zu lesen und über Designs nachzudenken, die auf vorhandenen Spezifikationen basieren, und ich bedauere, dass ** ich nicht in der Lage bin, meine Hände zu bewegen und Code zu schreiben **. ..

Selbst nach dem Lesen des Kommentars schien der Engpass recht gut erkannt worden zu sein, so dass ISUCON den Mangel an Implementierungskraft für "wie man ihn löst" deutlich spürte. Erhöhen Sie die Chancen, Code nicht nur in Ihrer täglichen Arbeit, sondern auch in Ihrem Privatleben zu schreiben! Es führte zur Motivation.

Schließlich

Vielen Dank an alle Betreiber für die lustigen Themen! !! Ich war sehr beeindruckt von den Fähigkeiten und der Einstellung aller, die dieses Niveau an Fragen und Turnieren verwalten. Ich möchte mich widmen, damit ich das eines Tages tun kann. Vielen Dank an Toshihito Kon für den erneuten Besuch! Wie Rache im nächsten Jahr!

Recommended Posts

Was ich durch die Teilnahme am ISUCON10-Qualifying gelernt habe
Ich habe an der ISUCON10-Qualifikationsrunde teilgenommen!
Was ich in Python gelernt habe
Was ich durch das Schreiben einer Python Pull-Anfrage zum ersten Mal in meinem Leben gelernt habe
Teilnahme an der ersten ISUCON mit dem Team "Ranchu" # ISUCON10 Qualifying
Was ich über Linux gelernt habe
Was ich durch das Lösen von 30 Fragen von Python Project Euler gelernt habe
Was ich bei der Analyse der Daten des Ingenieurmarktes gesehen habe
Ich habe mich im Labyrinth verlaufen
Die Geschichte der Teilnahme an AtCoder
Verwenden Sie den von word2vec gelernten Vektor in der Einbettungsebene von LSTM
Ich habe versucht, den Prozess mit Python zu studieren
Ich habe die Warteschlange in Python geschrieben
Was ich im letzten Jahr als ältere Person gelernt habe (für mein Alter ungeeignet)
Ich habe den Stack in Python geschrieben
Maschinelles Lernen, verdammter Amateur, habe ich in 2 Monaten gelernt, bis das Produkt veröffentlicht wurde
Ich möchte die Farbe ändern, indem ich auf den Streupunkt in matplotlib klicke
Ich habe eine fraktale Dimensionsanalyse mit der Box-Count-Methode in 3 Dimensionen versucht
Ich kann die Befehle in dem von pip von Emacs eingeführten Paket nicht finden
Was ist "Mahjong" in der Python-Bibliothek? ??
Lesen Sie die Datei Zeile für Zeile mit Python
Ich habe versucht, die verkratzten Daten in CSV zu speichern!
Lesen Sie die Datei Zeile für Zeile mit Python
Schriftliche Auswahlsortierung in C.
Ich kann das Element in Selen nicht bekommen!
Was ich an 1/30 Tagen bei hackerrank gelernt habe.
Ich habe den Gleitflügel in der Schöpfung geschrieben.
Was ich durch die Implementierung des Erstellens einer Standardbox für SSD gelernt habe
Was ich getan habe, als ich mit Lambda Python im Zeitlimit steckte
Ich habe versucht, die Veränderung der Schneemenge für 2 Jahre durch maschinelles Lernen vorherzusagen
Was ich durch die Bereitstellung von Django auf EC2 gefunden habe
Was ist im Docker Python-Image pfeifend?
Ich habe versucht, "Birthday Paradox" mit Python zu simulieren
Ich habe die Methode der kleinsten Quadrate in Python ausprobiert
Ich kann keine Zeichen in den Textbereich eingeben! ?? !! ?? !! !! ??
Ich habe versucht, das Datetime-Modul von Python zu verwenden
Ich habe versucht, die inverse Gammafunktion in Python zu implementieren
Suchen Sie nach dem Wert der Instanz in der Liste
Was soll ich mit DICOM von MPEG2 machen?
[Frage] Was passiert, wenn Sie% in Python verwenden?
Ich habe den im Qiita Adventskalender 2016 gelöschten Kalender überprüft
Ich habe versucht, Human In The Loop zu implementieren - Teil ① Dashboard -
Ich möchte den Fortschritt in Python anzeigen!
Woran ich in der Aufnahmeprüfungsfrage "Bayes Statistics from the Basics" gedacht habe
Was ich getan habe, als ich wütend war, es mit der Option enable-shared einzufügen