Ce que j'ai appris en participant aux qualifications ISUCON10

J'ai participé à ISUCON10

J'ai rejoint Isucon10 en tant qu'équipe power-in porte-bonheur avec mon collègue ToshihitoKon. L'origine du nom est le matériau de la bague intérieure qui était populaire dans l'entreprise pendant un certain temps w

Je n'ai pas pu participer à la première année de mon nouveau diplômé l'année dernière parce que j'étais trop occupé par le travail, j'ai donc pu me permettre un peu la deuxième année et je vais participer cette année! J'ai donc essayé de participer à la guerre. Le premier ISUCON!

Nous avons une légende qui a remporté l'ISUCON à plusieurs reprises et qui a des questions, mais si possible, j'aimerais faire équipe avec des membres du même niveau pour connaître ma position, j'ai donc décidé d'utiliser Toshihito Kon comme membre de l'équipe. Je t'ai invité. J'ai eu beaucoup d'occasions de travailler ensemble, donc en ce sens c'était facile de communiquer et c'était amusant.

ToshihitoKon avait une infrastructure solide, j'ai donc demandé l'infrastructure, et j'ai procédé à la répartition des rôles consacrés à l'application. La langue utilisée est Go.

Jusqu'au jour

J'ai réglé la qualification ISUCON9 en l'exécutant sur le docker local de mon Mac. http://isucon.net/archives/53805209.html

J'ai également regardé les blogs qui ont donné des scores élevés dans le passé et utilisé la stratégie comme référence. https://to-hutohu.com/2019/09/09/isucon9-qual/#%E5%BD%93%E6%97%A5

En conséquence, je pensais que je ne savais pas très bien comment utiliser ʻalp pt-query-digest`` Nginx`, alors j'ai essayé d'analyser le journal d'accès et le journal de requêtes lentes en fonction de la qualification ISUCON9. Je le faisais.

Après cela, le standard Make a competition, prépare le dépôt git à l'avance, et ainsi de suite.

Personnellement, je ne comprenais pas assez Nginx, alors j'ai lu les livres suivants. Cela a été très utile. Introduction à la pratique de nginx WEB + DB PRESS plus nginx

Lors des précédentes questions de qualification Isucon9, j'ai pu obtenir près de 10 000 points à portée de main, j'ai donc décidé de passer à la journée. Je suis resté chez Toshihito Kon la veille et j'ai eu un rassemblement lors d'une soirée pizza, et j'ai pu me sentir comme un festival lol

Au jour

ToshihitoKon a pu terminer les paramètres de l'infrastructure en douceur, j'ai donc pu me concentrer sur le réglage de l'application. ToshihitoKon s'occupera des paramètres de la base de données et de plusieurs configurations de périphériques, et ajustera l'application.

J'ai un score d'environ 650 ici, mais c'est lent depuis lors ... En regardant les autres équipes, il semblait que nous devions éliminer le goulot d'étranglement critique.

Je pensais qu'il y avait deux options, le traçage pour accélérer la recherche ou la mise en cache en mémoire, alors j'ai essayé la mise en cache en mémoire que j'avais étudiée à l'avance, mais je ne pouvais pas éliminer complètement les bogues et ne pouvais pas l'introduire. ... Je suis désolé!

En conséquence, j'ai terminé avec environ 650 points.

Essayez de participer

Lire le commentaire

http://isucon.net/archives/55025156.html En regardant les commentaires, j'ai pensé qu'il était important d'essayer d'accélérer la recherche en traçant.

De plus, je ne pouvais penser qu'à une stratégie pour implémenter la recherche côté application en faisant de l'endroit où la recherche est compliquée dans un cache en mémoire, mais il y avait aussi un moyen de mettre un index sur toutes les conditions de recherche normalement.

index Je pensais que ce n'était pas bon de le mettre dans les nuages sombres, mais j'aurais dû l'essayer une fois avant de prendre une décision. Ne vous contentez pas de deviner, mesurez-le.

De plus, je connaissais le problème que l'index ne fonctionnait pas en raison du tri par ordre décroissant et par ordre croissant, mais il est bien préférable d'ajouter une nouvelle colonne pour gérer cela! est devenu.

J'ai également remarqué que la vitesse d'insertion en vrac a été augmentée, mais je n'y ai pas accès autant que j'ai vu le journal, alors je l'ai laissé. Peut-être qu'une fois le goulot d'étranglement résolu, cela deviendra un problème par la suite.

Apprendre

Quand je travaille habituellement, j'ai beaucoup de travail qui est plus proche de l'application, et je n'ai pas eu à écrire les paramètres Nginx à partir de zéro, donc je pense que c'était très bien d'avoir acquis beaucoup de connaissances sur l'infrastructure en participant à ISUCON. Je vais!

De plus, dans mon travail actuel, je passe énormément de temps à lire du code et à réfléchir à des conceptions basées sur des spécifications existantes, et je regrette que ** je ne sois pas capable de bouger les mains et d'écrire du code **. ..

Même après avoir lu le commentaire, il semble que le goulot d'étranglement a été assez bien identifié, donc ISUCON a clairement senti le manque de puissance de mise en œuvre de "comment le résoudre". Augmentez les chances d'écrire du code non seulement dans votre travail quotidien mais aussi dans votre vie privée! Cela a conduit à la motivation.

finalement

Merci à tous les opérateurs pour les problèmes amusants! !! J'ai été très impressionné par les compétences et l'attitude de tous ceux qui gèrent ce niveau de questions et de tournois. Je veux me consacrer pour que je puisse faire ça un jour. Merci à Toshihito Kon de nous avoir rejoints! Comme la vengeance l'année prochaine!

Recommended Posts

Ce que j'ai appris en participant aux qualifications ISUCON10
J'ai participé au tour de qualification ISUCON10!
Ce que j'ai appris en Python
Ce que j'ai appris en écrivant une Pull Request Python pour la première fois de ma vie
Participé à la première ISUCON avec l'équipe "Ranchu" # ISUCON10 Qualifying
Ce que j'ai appris sur Linux
Ce que j'ai appris en résolvant 30 questions du projet python Euler
Ce que j'ai vu en analysant les données du marché des ingénieurs
Je me suis perdu dans le labyrinthe
L'histoire de la participation à AtCoder
Utilisez le vecteur appris par word2vec dans la couche Embedding de LSTM
J'ai essayé d'étudier le processus avec Python
J'ai écrit la file d'attente en Python
Ce que j'ai appris au cours de la dernière année en tant que personne âgée (ne convient pas à mon âge)
J'ai écrit la pile en Python
Machine learning putain d'amateur que j'ai appris en 2 mois jusqu'à la sortie du produit
Je veux changer la couleur en cliquant sur le point de dispersion dans matplotlib
J'ai essayé l'analyse de dimension fractale par la méthode de comptage de boîtes en 3 dimensions
Je ne trouve pas les commandes dans le package introduit par pip d'Emacs
Qu'est-ce que "mahjong" dans la bibliothèque Python? ??
Lisez le fichier ligne par ligne avec Python
J'ai essayé de sauvegarder les données récupérées au format CSV!
Lisez le fichier ligne par ligne avec Python
Tri sélect écrit en C
Je ne peux pas obtenir l'élément dans Selenium!
Ce que j'ai appris au hackerrank en 1/30 jours.
J'ai écrit l'aile coulissante dans la création.
Ce que j'ai appris en mettant en œuvre comment créer une boîte par défaut pour SSD
Ce que j'ai fait quand je suis resté coincé dans le délai avec lambda python
J'ai essayé de prédire l'évolution de la quantité de neige pendant 2 ans par apprentissage automatique
Ce que j'ai trouvé en déployant Django sur EC2
Qu'est-ce que wheezy dans l'image Docker Python?
J'ai essayé de simuler "Birthday Paradox" avec Python
J'ai essayé la méthode des moindres carrés en Python
Je ne peux pas saisir de caractères dans la zone de texte! ?? !! ?? !! !! ??
J'ai essayé d'utiliser le module Datetime de Python
J'ai essayé d'implémenter la fonction gamma inverse en python
Rechercher par la valeur de l'instance dans la liste
Que dois-je faire avec DICOM de MPEG2?
[Question] Que se passe-t-il si vous utilisez% en python?
J'ai vérifié le calendrier supprimé dans le calendrier de l'Avent Qiita 2016
J'ai essayé d'implémenter Human In The Loop - Partie ① Tableau de bord -
Je veux afficher la progression en Python!
Ce à quoi j'ai pensé dans la question de l'examen d'entrée de "Bayes Statistics from the Basics"
Ce que j'ai fait quand j'étais en colère de le mettre avec l'option enable-shared