Table des matières
An Influx of Users
Monitoring to the Rescue
Post Mortem
Takeaways
Maison base de données tutoriel mysql Surviving Success at Matchbook: Using MMS To Track

Surviving Success at Matchbook: Using MMS To Track

Jun 07, 2016 pm 04:32 PM
success US

This is a guest post from Jared Wyatt, CTO of Matchbook, an app for remembering the places you love and want to try. I joined Matchbook as CTO in January with the goal of breathing new life into an iOS app that had a small, but very devote

This is a guest post from Jared Wyatt, CTO of Matchbook, an app for remembering the places you love and want to try.

I joined Matchbook as CTO in January with the goal of breathing new life into an iOS app that had a small, but very devoted following. For various reasons, we decided to start fresh and rebuild everything from the ground up—this included completely revamping the app itself and totally redesigning our API and backend infrastructure. The old system was using MySQL as a datastore, but MongoDB seemed like a better fit for our needs because of its excellent geospatial support and the flexibility offered by its document-oriented data model.

We submitted Matchbook 2.0 to the App Store at the end of June and within a few days received an email from Apple requesting design assets because they wanted to feature our app. So, of course we were all, like, “OMG OMG OMG.”

An Influx of Users

We had originally planned for a quiet roll-out of version 2.0 because it was a completely new codebase and had not really been tested under load. However, our cautious reasoning was replaced by grandiose visions of fame and glory when Apple offered to feature us.

Matchbook 2.0 launched in the App Store on July 3rd. ?It was listed on the App Store home page under “New & Noteworthy” with top billing in the “Food & Drink” category. Within a week, we had onboarded tens of thousands of new users. Sweeet! It was high-fives all around until it suddenly wasn’t.

As our user base exploded, our application performance monitoring tool (New Relic) indicated massive amounts of time spent in the database during spikes of heavy user activity. Many, many milliseconds were being squandered somewhere in the ether while our API server was chatting with our MongoDB server. Support tickets and tweets started coming in about how much we sucked. We started freaking out (just a little) and began to rue the day we let Apple promote our app.

Monitoring to the Rescue

Prior to the launch, in addition to setting up New Relic to monitor our application, we set up MMS to monitor MongoDB. New Relic showed us that the performance issue was related to the database, but didn’t provide us with the detail necessary to determine what was causing the slowdown. So, I went to MMS. The first thing that caught my eye was the cursors chart. There were some freakish spikes in concurrently open cursors for the amount of activity on the database. So I says to myself, I says, “Jared, that seems sketchy, but why is it happening?”

I poked around in MMS a bit and noticed the profile data log—it was empty. At the risk of sounding like a n00b, I didn’t know what MongoDB profiling was, but it seemed like something I should look into. The MongoDB profile documentation indicates that level 1 profiles slow operations. Wait—did someone say slow operations? That’s me! I have slow operations! So, I hopped over to our database and said { profile: 1, slowms: 200 }.

Suddenly, query profiles started showing up in MMS and the universe began to make sense. We discovered that our ODM was running a lot of searches on indexed fields (which is good) using regular expressions instead of strings (which is bad for speediness). Upon further investigation, we found that this was happening because we had used the ODM to assign certain case-insensitive validations to some of the data models in our code. We made the appropriate changes and saw our performance issues immediately disappear. Our users were happy again.

image

Post Mortem

Although it caused big problems, this turned out to be a simple error with a simple fix. If not for MMS, the discovery could have been very time-intensive and stressful. It simply did not occur to us that our case-insensitive validations would cause the ODM to build queries with regular expressions and thus result in mad-crazy performance issues. Thanks to MMS, we got a clear picture of what went wrong, and it led us to implement a more efficient solution that gives us the case-insensitive validations we need without running regex searches in MongoDB.

It’s widely accepted that enterprise level systems need good monitoring tools because of their size and complexity, but the same need is often overlooked in tech startups. In today’s ecosystem where everyone is standing on the shoulders of dozens of 3rd-party libraries/frameworks/whatever to build a simple app, it’s often difficult to deduce where things might be going wrong. More than ever, the small, lean tech startups need tools that give us good insight so we can optimize performance and solve problems without expending too many of the precious few resources that we have.

Takeaways

  • Set up monitoring. Visibility into your operations and interpreting the data correctly is your lifeline. Set up some custom dashboards in MMS for at-a-glance views of key metrics.
  • Load test. Then load test some more and watch the data. You will see strange and wonderful things that you never thought possible when you watch how your application and database operations perform under load. Try to discover and fix some of these things before you launch. Load testing can also inform you about what specific metrics you should pay close attention to for your particular application.
  • Set up performance alerts. Once you have a pretty good idea of which metrics you need to pay attention to, create alerts for when these data points approach unacceptable levels.
  • Set up basic alerts for your server configuration, e.g. a replication lag alert for your replica set.
  • Strike a ninja-like offensive pose when you launch. You never know what will happen and must be ready with cat-like reflexes.

Learn more about Matchbook at matchbook.co. We’re currently hiring designers and developers, so feel free to drop us a line at jobs@matchbook.co for more info.

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser la méthode de réussite en php Comment utiliser la méthode de réussite en php Mar 06, 2023 am 09:12 AM

La méthode success en php est utilisée pour afficher un message de réussite. Sa syntaxe d'utilisation est "Success('...','Http://www.xxx.com/Admin/User/Index');", lorsque nous le faisons. N'écrivez pas d'URL, le système déterminera s'il existe une page précédente. S'il existe un système, il passera à la page précédente, sinon il ne sautera pas.

Comment utiliser la méthode du succès dans Laravel Comment utiliser la méthode du succès dans Laravel Aug 10, 2023 pm 02:09 PM

Dans Laravel, la méthode success est utilisée pour renvoyer une réponse réussie dans le contrôleur. Pour utiliser la méthode success, nous devons introduire la classe Response dans le contrôleur. Ensuite, nous pouvons utiliser une instance de cette classe pour appeler la méthode success. Vous pouvez définir le message de réponse, les données à renvoyer, le code d'état de la réponse et transmettre ces paramètres à la méthode de réussite. Une réponse réussie sera renvoyée, qui contient le message et les données utilisateur que nous avons définis.

Offre | La Tesla Model 3 Long Range AWD retrouve un incitatif fiscal complet de 7 500 $ et tombe en dessous de 40 000 $ Offre | La Tesla Model 3 Long Range AWD retrouve un incitatif fiscal complet de 7 500 $ et tombe en dessous de 40 000 $ Jun 19, 2024 am 09:55 AM

Peu de temps après que Tesla a lancé le rafraîchissement du Model 3 Highland vers la fin de l'année dernière, les règles fédérales américaines d'incitation fiscale pour les véhicules électriques ont changé, réduisant de moitié la remise potentielle pour les acheteurs éligibles en raison de l'utilisation par Tesla de cellules LFP chinoises dans le nouveau M.

Comptes antivirus Kaspersky aux États-Unis vendus à UltraAV avec transferts de services automatiques ce mois-ci Comptes antivirus Kaspersky aux États-Unis vendus à UltraAV avec transferts de services automatiques ce mois-ci Sep 18, 2024 pm 04:09 PM

Des comptes antivirus Kaspersky aux États-Unis ont été vendus à UltraAV, une division du groupe Pango. Pango a récemment été séparé d'Aura, une société de sécurité fondée par le PDG Hari Ravichandran. Kaspersky a été contraint d'abandonner le marché américain après avoir été interdit par

La fuite du prix du Samsung Galaxy S24 FE taquine les prix presque phares aux États-Unis La fuite du prix du Samsung Galaxy S24 FE taquine les prix presque phares aux États-Unis Sep 23, 2024 pm 03:16 PM

Le Samsung Galaxy S24 FE est jusqu'à présent apparu dans un certain nombre de fuites et de rumeurs suggérant toutes qu'il serait un tueur phare compétent avec un processeur mis à jour, un écran plus grand et plus de RAM. Cependant, une nouvelle fuite d'OnLeaks révèle que le S24 F

Tutoriel d'enregistrement et de trading des débutants de Gate.io Exchange Tutoriel d'enregistrement et de trading des débutants de Gate.io Exchange Feb 21, 2025 pm 09:54 PM

Gate.io Exchange est l'une des principales plateformes de trading de crypto-monnaie au monde. Ce guide fournit des tutoriels étape par étape pour aider les utilisateurs à s'inscrire et à échanger avec Gate.io. Le processus d'enregistrement comprend la sélection de la méthode d'enregistrement (téléphone, e-mail ou compte social), remplir des informations, définir un mot de passe de connexion et compléter l'authentification de l'identité. Les tutoriels de trading incluent l'accès aux pages de trading, la sélection de paires de trading, la saisie des informations de trading, la mise en place d'une commande et la visualisation de l'état de la commande. Avec les conseils de cet article, les utilisateurs peuvent facilement commencer à négocier la crypto-monnaie sur gate.io.

Quels sont les échanges de devises B3 en ligne? Comment l'acheter? Tutoriel de trading d'achat de pièces B3 Quels sont les échanges de devises B3 en ligne? Comment l'acheter? Tutoriel de trading d'achat de pièces B3 Mar 03, 2025 pm 06:00 PM

B3 Coin: Ecosystème de jeu de blockchain efficace et à faible coût et les jeux de blockchain guides d'achat sont limités depuis longtemps par des problèmes tels que l'évolutivité et la vitesse de transaction. Le projet B3 est construit sur la base, offrant une expansion efficace, à faible coût et conviviale des développeurs de l'écosystème de jeu. Cet article présentera en détail la plate-forme de trading et les méthodes d'achat de pièces B3. B3 Coin Trading Platform Actuellement, B3 Coin a lancé plusieurs plates-formes de trading grand public, notamment Coinbasepro, Gate.io, MEXC, Bybit et Coinw. Ces plateformes ont leurs propres caractéristiques, et les investisseurs peuvent choisir en fonction de leurs propres besoins: Coinbasepro:

Mar 22, 2024 pm 02:51 PM

Pour apprendre les meilleures pratiques en matière de méthodes de réussite en PHP, des exemples de code spécifiques sont nécessaires. PHP est un langage de script côté serveur populaire largement utilisé dans le domaine du développement Web. En PHP, la méthode success est une méthode courante utilisée pour déterminer si une opération réussit ou non, et est généralement utilisée pour renvoyer un message ou un code de réussite. Pour apprendre les meilleures pratiques en matière de méthodes de réussite en PHP, vous devez les démontrer et les expliquer avec des exemples de code réels. Tout d'abord, regardons un exemple simple montrant un succès réussi

See all articles