{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Nginx log analysis with pandas and matplotlib" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By Jess Johnson [http://grokcode.com](http://grokcode.com)\n", "\n", "This notebook analyzes Nginx access logs in order to estimate the capacity needed to survive a traffic spike. I'm looking at access logs for [Author Alcove](http://authoralcove.com) which was hit by a big traffic spike when it spent around 24 hours at the top of [/r/books](http://reddit.com/r/books/). The site was hugged to death by reddit. Visitors experienced very slow load times, and many people couldn't access the site at all due to 50x errors. So let's estimate how much extra capacity would be needed to survive this spike.\n", "\n", "The source for this notebook is located on [github](https://github.com/grokcode/ipython-notebooks). See a mistake? Pull requests welcome.\n", "\n", "Thanks to Nikolay Koldunov for his [notebook on Apache log analysis](http://nbviewer.ipython.org/github/koldunovn/nk_public_notebooks/blob/master/Apache_log.ipynb), and thanks to my bro Aaron for the much needed optimism and server optimization tips while everything was on fire.\n", "\n", "OK let's get started." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Setup" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%pylab inline" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's import the usual suspects." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import pandas as pd\n", "import numpy as np\n", "import sys\n", "import matplotlib.pyplot as plt" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will also use [apachelog](https://code.google.com/p/apachelog/), which is a module for parsing apache logs, but it works fine with nginx logs as long as we give it the right format string. You can install it with `pip install apachelog`. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "import apachelog" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Parsing the log" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I started out by doing some command line preprocessing on the log in order to remove bots. I used `egrep -v` to filter out the bots that were hitting the site the most often. These were Googlebot, Bingbot, the New Relic uptime checker, Buidu spider, and a few others. A more careful approach would filter out everything on one of the known bot lists ([like this one](http://www.robotstxt.org/db.html)), but I'm going to play it a bit fast and loose.\n", "\n", "First of all let's get a sample line out of the `access.log` and try to parse it. Here is a description of the codes in the log format we are working with:\n", "\n", " %h - remote host (ie the client IP)\n", " %l - identity of the user determined by identd (not usually used since not reliable)\n", " %u - user name determined by HTTP authentication\n", " %t - time the server finished processing the request.\n", " %r - request line from the client. (\"GET / HTTP/1.0\")\n", " %>s - status code sent from the server to the client (200, 404 etc.)\n", " %b - size of the response to the client (in bytes)\n", " %i - Referer is the page that linked to this URL.\n", " User-agent - the browser identification string\n", " %V - the server name according to the UseCanonicalName setting" ] }, { "cell_type": "code", "collapsed": false, "input": [ "sample_string = '178.137.91.215 - - [21/Feb/2014:06:44:53 +0000] \"GET /work/homepages-maths-year-6/ HTTP/1.0\" \\\n", "200 10427 \"http://authoralcove.com/work/homepages-maths-year-6/\" \"Opera/9.80 (Windows NT 6.1; WOW64; U; ru) \\\n", "Presto/2.10.289 Version/12.00\" \"-\"'\n", "nformat = r'%h %l %u %t \\\"%r\\\" %>s %b \\\"%i\\\" \\\"%{User-Agent}i\\\" \\\"%V\\\"'\n", "p = apachelog.parser(nformat)\n", "data = p.parse(sample_string)\n", "data" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 3, "text": [ "{'%>s': '200',\n", " '%V': '-',\n", " '%b': '10427',\n", " '%h': '178.137.91.215',\n", " '%i': 'http://authoralcove.com/work/homepages-maths-year-6/',\n", " '%l': '-',\n", " '%r': 'GET /work/homepages-maths-year-6/ HTTP/1.0',\n", " '%t': '[21/Feb/2014:06:44:53 +0000]',\n", " '%u': '-',\n", " '%{User-Agent}i': 'Opera/9.80 (Windows NT 6.1; WOW64; U; ru) Presto/2.10.289 Version/12.00'}" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's parse each line while preparing the access time so that pandas will be able to handle it." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from apachelog import ApacheLogParserError\n", "log_list = []\n", "with open('./private-data/access.log') as f:\n", " for line in f.readlines():\n", " try:\n", " data = p.parse(line)\n", " except ApacheLogParserError:\n", " sys.stderr.write(\"Unable to parse %s\" % line)\n", " data['%t'] = data['%t'][1:12]+' '+data['%t'][13:21]+' '+data['%t'][22:27]\n", " log_list.append(data)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Loading into pandas." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from pandas import Series, DataFrame, Panel\n", "df = DataFrame(log_list)\n", "df[0:2]" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
%>s%V%b%h%i%l%r%t%u%{User-Agent}i
0 200 - 10427 178.137.91.215 http://authoralcove.com/work/homepages-maths-y... - GET /work/homepages-maths-year-6/ HTTP/1.0 21/Feb/2014 06:44:53 +0000 - Opera/9.80 (Windows NT 6.1; WOW64; U; ru) Pres...
1 200 - 7507 202.46.54.40 - - GET / HTTP/1.1 21/Feb/2014 06:53:47 +0000 - Mozilla/4.0 (compatible; MSIE 7.0; Windows NT ...
\n", "

2 rows \u00d7 10 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 5, "text": [ " %>s %V %b %h \\\n", "0 200 - 10427 178.137.91.215 \n", "1 200 - 7507 202.46.54.40 \n", "\n", " %i %l \\\n", "0 http://authoralcove.com/work/homepages-maths-y... - \n", "1 - - \n", "\n", " %r %t %u \\\n", "0 GET /work/homepages-maths-year-6/ HTTP/1.0 21/Feb/2014 06:44:53 +0000 - \n", "1 GET / HTTP/1.1 21/Feb/2014 06:53:47 +0000 - \n", "\n", " %{User-Agent}i \n", "0 Opera/9.80 (Windows NT 6.1; WOW64; U; ru) Pres... \n", "1 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT ... \n", "\n", "[2 rows x 10 columns]" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now lets clean up the pandas dataframe a bit by deleting some columns we aren't interested in and renaming the remaining columns." ] }, { "cell_type": "code", "collapsed": false, "input": [ "del df['%V']\n", "del df['%h']\n", "del df['%i']\n", "del df['%l']\n", "del df['%u']\n", "del df['%{User-Agent}i']\n", "df[0:2]" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
%>s%b%r%t
0 200 10427 GET /work/homepages-maths-year-6/ HTTP/1.0 21/Feb/2014 06:44:53 +0000
1 200 7507 GET / HTTP/1.1 21/Feb/2014 06:53:47 +0000
\n", "

2 rows \u00d7 4 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ " %>s %b %r \\\n", "0 200 10427 GET /work/homepages-maths-year-6/ HTTP/1.0 \n", "1 200 7507 GET / HTTP/1.1 \n", "\n", " %t \n", "0 21/Feb/2014 06:44:53 +0000 \n", "1 21/Feb/2014 06:53:47 +0000 \n", "\n", "[2 rows x 4 columns]" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "df = df.rename(columns={'%>s': 'Status', '%b':'b', \n", " '%r':'Request', '%t': 'Time'})\n", "df[0:2]" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
StatusbRequestTime
0 200 10427 GET /work/homepages-maths-year-6/ HTTP/1.0 21/Feb/2014 06:44:53 +0000
1 200 7507 GET / HTTP/1.1 21/Feb/2014 06:53:47 +0000
\n", "

2 rows \u00d7 4 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 7, "text": [ " Status b Request \\\n", "0 200 10427 GET /work/homepages-maths-year-6/ HTTP/1.0 \n", "1 200 7507 GET / HTTP/1.1 \n", "\n", " Time \n", "0 21/Feb/2014 06:44:53 +0000 \n", "1 21/Feb/2014 06:53:47 +0000 \n", "\n", "[2 rows x 4 columns]" ] } ], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Massage the data a bit more so that the access time is a `datetime`, status is an `int`, and the response size is in MB, with missing data represented as `NaN`, not `-`." ] }, { "cell_type": "code", "collapsed": false, "input": [ "df.index = pd.to_datetime(df.pop('Time'))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "df['Status'] = df['Status'].astype('int')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "def dash2nan(x):\n", " if x == '-':\n", " x = np.nan\n", " else:\n", " x = float(x)/1048576.\n", " \n", " return x\n", "df['b'] = df['b'].apply(dash2nan)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Analysis" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's graph the data to visualize what is happening.\n", "\n", "First let's increase the graph size." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from pylab import *\n", "rcParams['figure.figsize'] = 10, 5 # width, height in inches" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's graph the requests hitting the web server. `10t` will use a 10 minute interval size, so each point on the graph shows the number of requestes in a 10 minute window." ] }, { "cell_type": "code", "collapsed": false, "input": [ "df_s = df['Status'].resample('10t', how='count')\n", "df_s.plot()\n" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 77, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 77 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Above we see that we were peaking at around 4500 requests every 10 minutes, or about 450 requests a minute. There was a quick ramp up as the site climbed to the top position on /r/books, then a drop off overnight (for US timezones), another peak the next day as people woke up, and then a decline as the site fell back down the /r/books page.\n", "\n", "Let's see how the server held up by looking at some response codes." ] }, { "cell_type": "code", "collapsed": false, "input": [ "df['Status'].value_counts()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 16, "text": [ "200 413236\n", "502 39769\n", "499 37443\n", "304 29777\n", "302 9467\n", "404 8171\n", "504 8105\n", "301 1743\n", "401 677\n", "403 262\n", "500 171\n", "206 51\n", "444 40\n", "400 20\n", "408 4\n", "405 1\n", "dtype: int64" ] } ], "prompt_number": 16 }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are quite a few 500 errors here. 499 errors are also bad news because it means that the client closed the connection before the page could be served. These are almost certainly because the site wasn't responding in a reasonable timeframe.\n", "\n", "Let's graph the response codes." ] }, { "cell_type": "code", "collapsed": false, "input": [ "grouped_status = df.groupby('Status')\n", "grouped_status.size().plot(kind='bar')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 17, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nflAlnx9Wp/vreNK+j0jnnovw2LFjWrhwod5++21de+21iqJIN998s2pqalLreOaZZ3TPPfeooqJC\nknTkyBHNnTtXR44cSa1Bkvr7+1VbW6u9e/dqaGhIZWVl+uqrr7RkyRItWrQo1ZaPPvpI/f39iqJI\nP/nJT/TXv/5VZWVlWrBggZYsWZJah8v35tChQzp69Kj27dunxYsX68svv9Tnn3+uBx98MPWNmcuf\nJX/5y1/0wAMPSJK2b9+uRYsWqaamRtdee21qDZLPfURREWtvbw/WRkdHo+effz71lpdffjmKoija\nsGHDeesbN25MreHrr7+OPv7443H/98wzz6TWEUVR1NHREd/etm1bdPjw4SiKoqizszPVjiiKot//\n/vfRO++8E+3fvz/av39/9Oc//zn+/zQ53F+d7iNR9M3Pxx//+Mfo9OnT8Xru/ScNX375ZbRly5ao\nt7c3ymaz8f302LFjqXaMfd1XXnnlvPWxP1/S9NJLL0VRdO4+84c//CHKZrNRFIV/xk02l+9NV1dX\nFEXnzsfYOTh+/Hh8ntLk8GdJFIX3hTfffDP6xz/+kfqf8y73kaKeIctms8FaSUmJSkpKUm9Zvny5\ndu3apQULFujNN9/U6Oio/vWvf43bOFlKSkrU1dWlEydOBP/76quvUuuQpBkzvrlrrlq1SgMDAzp4\n8GCqDWN+85vfaHh4WJ999pmWLl2qOXPm6Ec/+lH8L7u0ONxfne4jue6///74X7eF8J3vfEdNTU2q\nra3Va6+9ps8++0ySNHv27IL0FOLPsAuN/QyPteT+TKfJ5Xsz9iTnueMps2bNKsj3yuHPEklasmSJ\ndu7cGR83NDTo008/Tf3Pepf7SFE/D9ng4KD6+vpUWVmpKIqUzWbjX9tWV1en3nPixAnt27dPw8PD\nkqTFixdr2bJlqTbkvmxVrnwvYTUZ9u/fr2PHjp13Ceytt97Srl279MQTT6TWkev48ePKZDIaGhrS\no48+mvrXd7m/utxHJGn37t1asWLFeWsjIyPatWuXmpubU21xsHnzZlVUVCibzcbfo4GBAQ0MDKR+\nOfnw4cM6ePCgstmsbrnlFr377rsqLy/X/PnztXTp0lRbHAwPD+tvf/ubrrrqKtXX12vmzHMTQ2OX\nmdPk8mfJtxkeHrYYw0hbUW/IMPUU6w8qAGB6Y0MGAFfIZUgaIZcH5YzhUZbfcPm5cengUZYG3wSn\nFjp8W+jwbent7dXatWvPW4uiSO3t7XrooYdS63A5H04tLo+g41GWIZefG5cOHmV5gUI9ytKlhQ7f\nFjp8W54qEKLnAAAEc0lEQVR77rlx11944YVUO1zOh1OLyyPoeJRlyOXnxqWjqH9D5vJIE6cWOnxb\n6PBtueuuu7Rp06ZgSLqhoSHVDpfz4dQy9gi648eP8yjL/8/le+Pyc+PSUdQzZE6PNHFpocO3hQ7v\nFgdO58OpxQGPssREinpDBgAA4KCoL1k6vTyPS4vLS9G4dLi1wJPbI/nwDb43vlxe6sulo6g3ZC6v\no+XU8u9//1utra168skntX79+viRSa+88kqqmw+XDqcWl79YXDqcWlweyedyPpxa+N6EXDYgH374\noWpra3X48GHdf//98XpHR0dRdhT1Syc5vTyPU4tU+JeiceuQCt/yzDPPaHBwMH6poiNHjsT/X4wd\nTi0uL6/lcj6cWvjehD788ENJ515N4ec//7kaGxu1evVq7du3L/UWyeOlvqTCdxT1hszldbScWm68\n8UZJOu83PyMjI7rqqquKssOpxeUvFpcOpxaX18JzOR9OLXxvvl2hNyClpaXavn27Kisr47WBgYH4\nz9xi62CofxxOL8/j1AIPhX5NTbcOtxYHTufDqcWBw/lwes1TfIMNGQAAQIEV9SVLAAAAB2zIAAAA\nCowNGQAAQIEV9fOQAZgeTp48qddee01XX321oijSxx9/rPXr10uSuru7tXr16kv+nCMjIzp48KBW\nrFiRdC4ABNiQAZjyduzYoQceeCB+0eZt27bFbxt7UedL9fXXX+vs2bOJ9AHARHiUJYApb/v27Zo3\nb54WL1583vrOnTvV29sbv3jz9773PTU0NEiSRkdHtWHDBs2cOVNRFOmaa66JnzF9eHhY27dv19DQ\nkBYsWCBJuvPOO3XjjTfq8OHDeu655/S73/1OkrR161YNDAzo17/+tSTpyy+/1MaNG3XNNdeotLRU\n77//vn7729+mch4ATF1syABMC/v27dNHH32ks2fPaunSpbr55pslnXv5k1/+8pcTfvzLL7+sBx98\nMD7+9NNPtX//fv3sZz8L3vfCz7lx40bdd999ks49+/kHH3wQb+4GBgY0b968K/lPA1AEuGQJYFpY\ntmyZli1bJkl67rnntHDhwryvpnDmzBlt27ZN2WxWM2bMiF9O5krNnz9f2WxWb7zxhrLZrCSxIQMw\nITZkAKa8l156Sb/61a/i44qKiglfFub111/XXXfdpe9+97uSpC+++OK8t5eWlsYbqguVlZXp66+/\n1syZM3X27FmdOnUqftu7776rW2+9VQsXLpQk7d69m9+SAZgQGzIAU96pU6fU1dWlGTNm6MyZM1qw\nYEE84H/rrbeqo6NDV111laIo0vz58/XjH/9Yixcv1htvvBFvro4cOaKtW7fGLyUze/ZsnThxQq++\n+qpmzJih//73v1qzZo1mzpypO++8Uy+88IKuvvpqnTlzRkNDQzpy5Ihqamr04Ycf6vDhw+f13XHH\nHamfEwBTCzNkAAAABcYTwwIAABQYGzIAAIACY0MGAABQYGzIAAAACowNGQAAQIGxIQMAACgwNmQA\nAAAFxoYMAACgwP4fM8sP1AxZ48YAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 17 }, { "cell_type": "markdown", "metadata": {}, "source": [ "OK that doesn't look too bad. The vast majority of requests were served a 200 (OK) response.\n", "\n", "Let's graph the most common response codes over time, with a sample timespan of 1 hour." ] }, { "cell_type": "code", "collapsed": false, "input": [ "t_span = '60t'\n", "df_200 = df['Status'][df['Status'] == 200].resample(t_span, how='count')\n", "df_502 = df['Status'][df['Status'] == 502].resample(t_span, how='count')\n", "df_499 = df['Status'][df['Status'] == 499].resample(t_span, how='count')\n", "df_304 = df['Status'][df['Status'] == 304].resample(t_span, how='count')\n", "df_302 = df['Status'][df['Status'] == 302].resample(t_span, how='count')\n", "df_404 = df['Status'][df['Status'] == 404].resample(t_span, how='count')\n", "df_504 = df['Status'][df['Status'] == 504].resample(t_span, how='count')\n", "df_301 = df['Status'][df['Status'] == 301].resample(t_span, how='count')\n", "\n", "\n", "status_df = DataFrame({'OK': df_200, \n", " 'Bad Gateway': df_502, \n", " 'Client Closed': df_499, \n", " 'Not Modified': df_304, \n", " 'Found': df_302, \n", " 'Not Found': df_404,\n", " 'Gateway Timeout': df_504,\n", " 'Moved Permenantely': df_301})" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 110 }, { "cell_type": "code", "collapsed": false, "input": [ "status_df.fillna(0, inplace=True)\n", "status_df[0:5]" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Bad GatewayClient ClosedFoundGateway TimeoutMoved PermenantelyNot FoundNot ModifiedOK
Time
2014-02-21 06:00:00 0 0 0 0 0 0 0 3
2014-02-21 07:00:00 0 0 3 0 0 4 1 29
2014-02-21 08:00:00 0 0 0 0 0 0 0 2
2014-02-21 09:00:00 0 0 0 0 0 2 0 3
2014-02-21 10:00:00 0 6 0 3 0 0 0 2
\n", "

5 rows \u00d7 8 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 111, "text": [ " Bad Gateway Client Closed Found Gateway Timeout \\\n", "Time \n", "2014-02-21 06:00:00 0 0 0 0 \n", "2014-02-21 07:00:00 0 0 3 0 \n", "2014-02-21 08:00:00 0 0 0 0 \n", "2014-02-21 09:00:00 0 0 0 0 \n", "2014-02-21 10:00:00 0 6 0 3 \n", "\n", " Moved Permenantely Not Found Not Modified OK \n", "Time \n", "2014-02-21 06:00:00 0 0 0 3 \n", "2014-02-21 07:00:00 0 4 1 29 \n", "2014-02-21 08:00:00 0 0 0 2 \n", "2014-02-21 09:00:00 0 2 0 3 \n", "2014-02-21 10:00:00 0 0 0 2 \n", "\n", "[5 rows x 8 columns]" ] } ], "prompt_number": 111 }, { "cell_type": "code", "collapsed": false, "input": [ "status_df.plot()\n", "legend()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 112, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 112 }, { "cell_type": "markdown", "metadata": {}, "source": [ "This doesn't look too bad either, but it's hard to make sense of what is going on with so many different response codes. Let's group them into success (web server handled it as expected) and failure (web server error or client closed request).\n", "\n", " 200 413236 Success OK \n", " 502 39769 Failure Bad Gateway\n", " 499 37443 Failure Client closed request\n", " 304 29777 Success Not modified\n", " 302 9467 Success Found\n", " 404 8171 Success Not Found\n", " 504 8105 Failure Gateway timeout\n", " 301 1743 Success Moved permanently\n", " 401 677 Success Unauthorized\n", " 403 262 Success Forbidden\n", " 500 171 Failure Internal server error\n", " 206 51 Success Partial content\n", " 444 40 Failure? No response\n", " 400 20 Success? Bad request\n", " 408 4 Success? Request timeout\n", " 405 1 Success? Method not allowed" ] }, { "cell_type": "code", "collapsed": false, "input": [ "success_df = df[df['Status'].isin([200, 304, 302, 404, 301, 401, 403, 206, 444, 400, 408, 405])].resample(t_span, how='count')\n", "fail_df = df[df['Status'].isin([502, 499, 504, 500, 444])].resample(t_span, how='count')\n", "success_df.plot(label=\"Success\")\n", "fail_df.plot(label=\"Failure\")\n", "legend()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 113, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nHDgw5T1C0zQ0Gg2Sk5NRUVGB9evX46233oLVagVFUTh27BgoigJN03j00UeRlZWF1tZWHD16FBaL\nBfn5+Wz7ZWVleP/996HT6XDr1i2kpKRAqVSira0NAwMDnHbkcjmqq6vR2tqKiYkJdHR0ICMjAy0t\nLdDr9ZBKpXA4HKirq8OGDRvYe8d3eUgggt0jDQ0NaGlpwejoKJ577jnOmBoMBvYe9Yzpnj178KMf\n/QgMw3DWOAa75gHgzJkz6OrqgkAgYHVLMPkHal+r1eLcuXNobGyETCbD+fPnQ+qWjz76CAaDAYcO\nHQKfzwdFUXjhhRcAAOfPn0d/fz8OHz6MtWvXhpRZMLkNDQ2F1HWLXbcsWbIE+fn5eOedd9iIDc89\n91zYusUDj8cL+GwiuiX6usUzvhUVFazMQ+mWSJ/jsR67UOXB7pFAqNVqxMfHs2siExMTg65ZjiXT\nTnvY09OD27dv4/7775/tPi1qYi3nq1evoq6uDs8//3xMjhdtbt68CavVitWrV891V0KOXSzlXFVV\nhYceemjWjwNER/7zXbdEa+zm+loluiU85nq8fCG6ZWGyEHTLtD2Rvm5TwuwRazn39/ez7vG7Eblc\njmXLls11NwCEHrtYyfnatWu4fv06pFIpuwB+NomG/Oe7bonW2M31tUp0S3jM9Xj5QnTLwmQh6JZp\neyIJBAKBQCAQCAQPJHc2gUAgEAgEAiFsiBFJIBAIBAKBQAgbYkQSCAQCgUAgEMKGGJEEAoFAIBAI\nhLAhRiSBQCAQCAQCIWyIEUkgEAgEAoFACJv/DyLgCTFeqp1AAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 113 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Those are the requests served by nginx, so it includes both static files like css and javascript and dynamic content that was passed off to the Django app running on uwsgi. Let's filter out the static files and see how uwsgi did. In this case almost all of the static files have `/static/` in the path with a few exceptions such as the `favicon.ico`.\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "dynamic_df = df[df['Request'].str.contains(r'^GET /(static|favicon.ico)') == False]\n", "dynamic_df[0:10]" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
StatusbRequest
Time
2014-02-21 06:44:53 200 0.009944 GET /work/homepages-maths-year-6/ HTTP/1.0
2014-02-21 06:53:47 200 0.007159 GET / HTTP/1.1
2014-02-21 06:54:22 200 0.007159 GET / HTTP/1.1
2014-02-21 07:01:28 200 0.002501 GET / HTTP/1.1
2014-02-21 07:02:11 200 0.004643 GET /accounts/create-account/ HTTP/1.1
2014-02-21 07:03:06 302 0.000000 POST /accounts/create-account/ HTTP/1.1
2014-02-21 07:03:07 200 0.003963 GET /work/lists/most-popular/ HTTP/1.1
2014-02-21 07:03:41 200 0.001887 GET /work/lists/most-popular/?page=2&querystri...
2014-02-21 07:03:48 200 0.002122 GET /work/lists/most-popular/?page=3&querystri...
2014-02-21 07:03:55 200 0.002145 GET /work/lists/most-popular/?page=4&querystri...
\n", "

10 rows \u00d7 3 columns

\n", "
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 114, "text": [ " Status b \\\n", "Time \n", "2014-02-21 06:44:53 200 0.009944 \n", "2014-02-21 06:53:47 200 0.007159 \n", "2014-02-21 06:54:22 200 0.007159 \n", "2014-02-21 07:01:28 200 0.002501 \n", "2014-02-21 07:02:11 200 0.004643 \n", "2014-02-21 07:03:06 302 0.000000 \n", "2014-02-21 07:03:07 200 0.003963 \n", "2014-02-21 07:03:41 200 0.001887 \n", "2014-02-21 07:03:48 200 0.002122 \n", "2014-02-21 07:03:55 200 0.002145 \n", "\n", " Request \n", "Time \n", "2014-02-21 06:44:53 GET /work/homepages-maths-year-6/ HTTP/1.0 \n", "2014-02-21 06:53:47 GET / HTTP/1.1 \n", "2014-02-21 06:54:22 GET / HTTP/1.1 \n", "2014-02-21 07:01:28 GET / HTTP/1.1 \n", "2014-02-21 07:02:11 GET /accounts/create-account/ HTTP/1.1 \n", "2014-02-21 07:03:06 POST /accounts/create-account/ HTTP/1.1 \n", "2014-02-21 07:03:07 GET /work/lists/most-popular/ HTTP/1.1 \n", "2014-02-21 07:03:41 GET /work/lists/most-popular/?page=2&querystri... \n", "2014-02-21 07:03:48 GET /work/lists/most-popular/?page=3&querystri... \n", "2014-02-21 07:03:55 GET /work/lists/most-popular/?page=4&querystri... \n", "\n", "[10 rows x 3 columns]" ] } ], "prompt_number": 114 }, { "cell_type": "code", "collapsed": false, "input": [ "success_df = dynamic_df[dynamic_df['Status'].isin([200, 304, 302, 301, 401])].resample(t_span, how='count')\n", "fail_df = dynamic_df[dynamic_df['Status'].isin([502, 499, 504, 500])].resample(t_span, how='count')\n", "success_df.plot(label=\"Success\", color=\"g\")\n", "fail_df.plot(label=\"Failure\", color=\"r\")\n", "legend()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 115, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 115 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ouch! So during the initial peak, uwsgi is failing more often than not. Let's look at the same data in a stacked bar chart." ] }, { "cell_type": "code", "collapsed": false, "input": [ "responses_df = DataFrame({'Success': success_df, \n", " 'Failure': fail_df,\n", " })\n", "responses_df.plot(kind=\"bar\", stacked=True, xticks=(), colors=(\"r\", \"g\",))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 116, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAl4AAAEuCAYAAABf6xzaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHIRJREFUeJzt3W1sU9fhx/GfY/JAIH9TSpmSpcKspctE17IgEbYZgpZs\nC51ACbCpWcbaVdMmjUl7te5BmtYV7aHb2hV1U19sVFpVFE1rgaGsoBavyupKIxtpy9OACZqmHoR0\npFxCG57i+39Bc+sEO+Te2Mf29fcjVb3nXPvm2HHIL+ece07Atm1bAAAAyLqSXDcAAACgWBC8AAAA\nDCF4AQAAGELwAgAAMITgBQAAYMgNg1cikdDo6KiJtgAAAPjajMlO7tmzRydPnlRra6tqamokSYcP\nH9axY8eUSCS0fPly1dbWSpIGBgYUjUYVDAbV2Nio6upqT/UAAAB+NWmPV0tLi1atWjWu7uzZs1q3\nbp02bNigAwcOOPU9PT3q6OjQvffeq3379nmuBwAA8CvXc7xWrlyZsr6ystI5Lisr81wPAADgV54n\n17/44otatmyZU05eAL+0tNRzPQAAgF9NOscrne7ubi1atEjz5s1z6pIn4AcCAc/1qbzwwgsKBoNe\nmgoAAGDUnDlztHTp0pTnXAevl19+WR/60IcUDofH1Y+MjEi61pM1duylPpVgMKj6+nq3TQUAADCu\nt7c37blJg9fevXt18uRJVVRUKBwOq66uTq+88orq6up09OhRDQ8Pa+PGjZKkhoYGdXZ2yrZtNTc3\nO9dwWw8AAOBXATt5slWeikaj9HgBAICC0Nvbq6amppTnWLkeAADAEIIXAACAIZ7uagQAAPnp7Nmz\nunTpUq6b4Xvl5eW6+eabXT+P4AUAgE9cuHBBkpxt/pA9Z8+e1YULFzR79mxXz2OoEQAAn7AsS3Pn\nzs11M4rC3LlzZVmW6+cRvAAA8IlAIHDDRcmRGV7fa4IXAACAIczxAgDAx0r6+hSIx7N2fbu2VokJ\nu9kgPYIXAAA+FojH9X9r12bt+ud37ZIIXlNG8AIAAFl15coVPfLIIzpx4oSWLFni1J89e1YPP/zw\nDZ/f2dkpSWpvbx9XH4vFtH//fg0ODuqnP/1pZhudJQQvAACQVaWlpbrvvvsUi8XGhadHH310Ss9v\naWlJWR+JRBSJRPTII49kpJ0mELwAAIBR7777rmbNmqWGhgb19/dr27Ztmjlzpi5evKjly5dr1apV\nzmM7Ozt1/Phx3XHHHdf1eKVz4MAB/fjHP9aOHTskSX/4wx906NAhPf7445KkQ4cOaevWrVq1apUO\nHTqkiooKhcNhrV+/XleuXNETTzyhYDDo3Lm4adMmlZRk5n5EghcAADDihRde0ODgoP73v/9p8+bN\nikQikqQf/OAHzmN+8YtfjAte7e3teuuttxSLxab8de666y4tX77cKX/9618f17t25513asOGDXrm\nmWf02GOPaebMmc65J598UuvWrVP4/Xlrb775pp555hl99atfdftyUyJ4AQAAIz73uc+pvb1dv/vd\n75y6/v5+/fnPf9aMGTMUDAZ15swZY+3ZuHHjuNAlSW+99Zb+8pe/jKsrKyvL2NckeAEAgKyzbds5\n3rRpk3O8detW/ehHP9KMGdciSapJ8snPnary8nJduXJFpaWlunjxooaGhqZ0zbvvvlsrVqzQggUL\nnLrLly+7/vrpELwAAEBWXblyRU8//bROnDihwcFBrV27VgsXLpQk3XbbbXriiScUCAR06dIlHTx4\nUHv27FFLS4veeOMN7dq1S+fOnVNfX58GBwdVX1+vFStW6OLFi/r973+vRCKhf/zjH9qyZYvmz5/v\nzANrbW3VT37yE82ZM0cjIyN68803dfDgQX384x9XV1eXotGoJOlf//qXFi1apHvuuUeS9JWvfEVP\nPfWUs+/lyMiI7rjjDrW1tWXkvQjYXmKkYdFoVPX19bluBgAAee3UqVPXbZDNAqrZk+r9lqTe3l41\nNTWlfA49XgAA+FgiHGaB0zzCXo0AAACGELwAAAAMIXgBAAAYQvACAAAwhOAFAABgCMELAADAEJaT\nAADAx/qsPsWHs7eOV21VrcKhcNau7zcELwAAfCw+HNfa7Wuzdv1d63bdMHi9/fbbevLJJzVnzhzZ\ntq3jx4+P26+xmBC8AABAVv3xj3/Ugw8+qIqKCknSU089leMW5Q7BCwAAZNW8efN04MABLVu2TJL0\nwAMP6J133tHmzZu1fv16ffrTn9bu3bu1detWPfvss87znnvuOcXjcQWDQY2MjMi2bT344IOSru2x\n+Pe//10zZsxQIpHQf/7zH6cXbd++fYpGo5o9e7bee+89rV69Wnfffbck6fz583r00Uc1d+5cBYNB\n9fT06Omnn3a+5m9+8xslEgmVl5err69PX/7ylzO6bSHBCwAAZNX999+vaDSq3/72t7p48aKWL1+u\n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\n", "text": [ "" ] } ], "prompt_number": 116 }, { "cell_type": "markdown", "metadata": {}, "source": [ "It looks like about 2,000 requests / hour is all uwsgi can handle before it starts to throw errors. That is only about 1 request every two seconds so that is a pretty big problem.\n", "\n", "We needed to handle 10,000 requests / hour, but we were only able to handle 2,000 requests / hour. So it looks like we would need roughly 5x the capacity to handle a spike of this size. This is a little bit misleading though because many visitors abandoned the site after hitting 50X errors and long page loads.\n", "\n", "Here is a view of the same traffic spike from Google Analytics.\n", "\n", "![Google Analytics Pageviews vs. Pages per Visit](files/data/google-analytics.png)\n", "\n", "During the spike, pages per visit were roughly half of what they normally were, so let's double the 5x estimate and plan for 10x the capacity to handle this load." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Solutions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One solution is to upgrade the server running uwsgi and use ten times the number of workers to handle requests, but let's see if we can be a bit smarter.\n", "\n", "Another solution is to optimize the web app by shortening long-running requests, but I have already picked most of the low hanging fruit there. \n", "\n", "Let's investigate to see if there are any opportunities to prevent requests from hitting uwsgi in the first place.\n", "\n", "First let's get a count pages with the most requests.\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "dynamic_df['Request'].value_counts().head(40)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 119, "text": [ "GET / HTTP/1.1 48707\n", "GET /work/lists/most-popular/ HTTP/1.1 19818\n", "GET /accounts/create-account/ HTTP/1.1 10301\n", "GET /apple-touch-icon.png HTTP/1.1 9591\n", "POST /accounts/create-account/ HTTP/1.1 6537\n", "GET /work/lists/most-popular/?page=2&querystring_key=page HTTP/1.1 6335\n", "GET /work/lists/highest-rated/ HTTP/1.1 5819\n", "GET /accounts/login/ HTTP/1.1 3502\n", "GET /work/lists/most-popular/?page=3&querystring_key=page HTTP/1.1 3055\n", "GET /work/lists/most-popular/?page=4&querystring_key=page HTTP/1.1 2208\n", "POST /accounts/login/ HTTP/1.1 2071\n", "GET /work/lists/most-popular/?page=5&querystring_key=page HTTP/1.1 1699\n", "POST /work/rate/195559/ HTTP/1.1 1462\n", "POST /work/rate/182662/ HTTP/1.1 1450\n", "POST /work/rate/179080/ HTTP/1.1 1429\n", "POST /work/rate/172160/ HTTP/1.1 1378\n", "GET /work/lists/most-popular/?page=6&querystring_key=page HTTP/1.1 1376\n", "POST /work/rate/172203/ HTTP/1.1 1375\n", "POST /work/rate/179079/ HTTP/1.1 1313\n", "POST /work/rate/174370/ HTTP/1.1 1295\n", "GET /work/lists/highest-rated/?page=2&querystring_key=page HTTP/1.1 1294\n", "POST /work/rate/224637/ HTTP/1.1 1232\n", "GET /work/lists/most-popular/?page=7&querystring_key=page HTTP/1.1 1173\n", "GET /user/recommended/ HTTP/1.1 1085\n", "POST /work/rate/23173/ HTTP/1.1 1076\n", "POST /work/rate/172553/ HTTP/1.1 1068\n", "GET /accounts/edit-profile/ HTTP/1.1 1045\n", "POST /work/rate/8697/ HTTP/1.1 1007\n", "GET /work/lists/most-popular/?page=8&querystring_key=page HTTP/1.1 1007\n", "POST /work/rate/217649/ HTTP/1.1 969\n", "POST /work/rate/172161/ HTTP/1.1 937\n", "POST /work/rate/25922/ HTTP/1.1 904\n", "GET /work/lists/most-popular/?page=9&querystring_key=page HTTP/1.1 892\n", "POST /work/rate/1724/ HTTP/1.1 848\n", "POST /work/rate/172335/ HTTP/1.1 796\n", "GET /work/lists/most-popular/?page=10&querystring_key=page HTTP/1.1 793\n", "GET /work/the-name-of-the-wind-kingkiller-chronicles-day-1/ HTTP/1.1 790\n", "GET /work/lists/most-popular/?utm_campaign=webapp&utm_medium=email&utm_source=Welcome+to+Author+Alcove HTTP/1.1 784\n", "GET /apple-touch-icon-precomposed.png HTTP/1.1 768\n", "POST /work/rate/171563/ HTTP/1.1 762\n", "dtype: int64" ] } ], "prompt_number": 119 }, { "cell_type": "markdown", "metadata": {}, "source": [ "There isn't much that can be done with the POST requests - they need to hit uwsgi so we can save new accounts or ratings in the database. So let's move on to the GET requests. There are two basic techniques for having nginx serve these pages. First, we could have uwsgi store the fully rendered page in memcached or similar, then have nginx try to pull the page from memcached and falling back to uwsgi if the page wasn't in the cache. The second idea is to have uwsgi create a static file, and then let nginx serve that if it exists. Unfortunately, in this case both of those solutions are problematic. It is beyond the scope of this notebook to go into details (hopefully I will have a separate blog post on that soon), but the gist is that for most of these pages, the content changes depending on who is viewing them, so they can't readily be cached at the page level.\n", "\n", "The biggest gain would be to make the homepage static. The homepage will redirect to a user's recommended page if they are already logged in, but we could possibly detect logged in users with nginx via the http headers and only serve the static page to logged out visitors. Let's see what proportion of visitors who hit the homepage were logged in already." ] }, { "cell_type": "code", "collapsed": false, "input": [ "dynamic_df[dynamic_df['Request'].str.contains('GET / HTTP/1.1')]['Status'].value_counts()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 140, "text": [ "200 19331\n", "502 12559\n", "499 10781\n", "302 3053\n", "504 2036\n", "301 946\n", "500 1\n", "dtype: int64" ] } ], "prompt_number": 140 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Of the visitors who were able to access the homepage, (19331 / (3053 + 946 + 19331)) * 100 = 83% were logged out. So that nginx configuration change would have saved a bit more than 40,000 requests.\n", "\n", "Out of how many total?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "dynamic_df.count()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 141, "text": [ "Status 307402\n", "b 307402\n", "Request 307402\n", "dtype: int64" ] } ], "prompt_number": 141 }, { "cell_type": "markdown", "metadata": {}, "source": [ "So that change alone would offload 13% of uwsgi's request load to nginx. That's a good start.\n", "\n", "Another thing that jumps out is that `/apple-touch-icon.png` and `/apple-touch-icon-precomposed.png` don't actually exist have to be passed off to uwsgi before they 404. Setting up nginx to serve anything ending in `.png` will save some requests. Let's see if there are any other files like that." ] }, { "cell_type": "code", "collapsed": false, "input": [ "dynamic_df[dynamic_df['Request'].str.contains(r'(png |xml |gif )')]['Request'].value_counts().head(10)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 134, "text": [ "GET /apple-touch-icon.png HTTP/1.1 9591\n", "GET /apple-touch-icon-precomposed.png HTTP/1.1 768\n", "GET /apple-touch-icon-120x120-precomposed.png HTTP/1.1 103\n", "GET /apple-touch-icon-120x120.png HTTP/1.1 91\n", "GET /apple-touch-icon-152x152-precomposed.png HTTP/1.1 36\n", "GET /browserconfig.xml HTTP/1.1 35\n", "GET /apple-touch-icon-152x152.png HTTP/1.1 33\n", "GET /blog/images/logo3.png HTTP/1.1 18\n", "GET /apple-touch-icon-76x76-precomposed.png HTTP/1.1 14\n", "GET /blog/atom.xml HTTP/1.1 13\n", "dtype: int64" ] } ], "prompt_number": 134 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's see how many requests that will save." ] }, { "cell_type": "code", "collapsed": false, "input": [ "dynamic_df[dynamic_df['Request'].str.contains(r'(png |xml |gif )')].count()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 137, "text": [ "Status 10870\n", "b 10870\n", "Request 10870\n", "dtype: int64" ] } ], "prompt_number": 137 }, { "cell_type": "markdown", "metadata": {}, "source": [ "That is another 3.5% of requests.\n", "\n", "Between those two changes we will save 16.5% of requests from hitting uwsgi. It isn't enough to prevent the need for a server upgrade, but it does get us a bit closer." ] } ], "metadata": {} } ] }