Understanding Linux Load Average – Part 2

The Dutch Prutser's Blog

In part 1 we performed a series of experiments to explore the relation between CPU utilization and Linux load average. We came to the conclusion that CPU utilization clearly influences the load average. In part 2 we will continue our experiments and take a look if disk I/O also influences the Linux load average.

Disk I/O and load average

The first experiment is starting 2 processes performing disk I/O on an otherwise idle system to measure the amount I/O issued, the load average and CPU utilization using the sar command. BTW: My load-gen script uses the dd command to generate disk I/O.

The -b command line option given to sar tells it to report disk I/O statistics. The above output tells us that on average 48207 blocks per second were written to disk and almost nothing was read. What effect does this have on the load average?

The run-queue utilization…

View original post 565 more words

Understanding Linux Load Average – Part 2

Understanding Linux Load Average – Part 1

Very nice article on how to detect load average issue

The Dutch Prutser's Blog

A frequently asked question in my classroom is “What is the meaning of load average and when is it too high?”. This may sound like an easy question, and I really thought it was, but recently I discovered that things aren’t always that easy as they seem. In this first of a three-part post I will explain what the meaning of Linux load average is and how to diagnose load averages that may seem too high.

Obtaining the current load average is very simple by issuing the uptime command:

But what is the meaning of these 3 numbers? Basically load average is the run-queue utilization averaged over the last minute, the last 5 minutes and the last 15 minutes. The run-queue is a list of processes waiting for a resource to become available inside the Linux operating system. The example above indicates that on average there were 10.52 processes waiting…

View original post 836 more words

Understanding Linux Load Average – Part 1

Serving Flask with nginx

Installing Common Python Tools for Deployment
apt-get install -y python python-dev python-distribute python-pip
apt-get install nginx

Installing The Web Application and Its Dependencies
Download and install Flask and uwsgi using pip

pip install virtualenv
mkdir /var/www/ngstones.com && cd /var/www/ngstones.com
virtualenv -p /usr/bin/python venv
source venv/bin/activate
pip install uwsgi
pip install flask

rm /etc/nginx/conf.d/default

vim /etc/nginx/conf.d/ngstones

server {
listen 80;
charset utf-8;
client_max_body_size 75M;

location / { try_files $uri @ngstones; }
location @ngstones {
include uwsgi_params;
uwsgi_pass unix:/var/www/ngstones.com/demoapp_uwsgi.sock;

vim /var/www/ngstones.com/demoapp_uwsgi.ini

#application's base folder
base = /var/www/ngstones.com

#python module to import
app = hello
module = %(app)

home = %(base)/venv
pythonpath = %(base)

#socket file’s location
socket = /var/www/ngstones.com/%n.sock

#permissions for the socket file
chmod-socket = 666

#the variable that holds a flask application inside the module imported at line #6
callable = app

#location of log files
logto = /var/log/uwsgi/%n.log

vim /var/www/ngstones.com/hello.py
from flask import Flask
app = Flask(__name__)
def hello():
return “Hello!”
if __name__ == “__main__”:

Restart Nginx to load new config file
service nginx restart
cd /var/www/ngstones.com/
uwsgi --ini /var/www/ngstones.com/demoapp_uwsgi.ini

Finally update your DNS and you are good to go!

Serving Flask with nginx