Django - Tutorial 030. Opportunities VDS server for $ 5 for the project on Django

Ubuntu, Django, VDS

With the growth of site functionality, as well as attendance, it was possible to successfully test the capabilities of the current VDS server, which I currently use. I would like to describe my experience with VDS, as well as show how much this VDS keeps under certain conditions and sizes of the project.

I decided to tell about it right now, because a week ago I expanded the server's capacity by purchasing additional memory.

All the further narrative will be subjective, but I hope that it will make it possible to make a general picture, so that newcomers will be able to navigate in what server they need for their needs, and this will facilitate the choice of the server.

Server Configuration

Initially, the site worked on the minimum configuration that I managed to take. The fare is $5 per month. By the way, my ISP also has a cheaper tariff (190 rubles / month), but it is fixed, whereas my current tariff allows me to configure the configuration necessary for me and increase the server's capacity to one that is not available at fixed tariffs.


  1. Processor cores: 2 x 2,7 GHz
  2. RAM: 512 Mb
  3. SSD: 5Gb
  4. OS: Ubuntu 16.04
  5. Access to the Internet: 100 Mbit/s

All configuration of the server was done exclusively through the console, without any auxiliary tools like ISP Manager, which also absorbs some of the RAM, so this modest RAM was enough for me for a long time

Django project

The project itself has already grown quite strongly, and there are many data models responsible for such parts of the site as

To understand the whole scale, I will give the current structure of the data models of the site.

That is, the site is already a little more than a regular blog, and I make every effort to develop it in the framework of free time.

As the site grew and the code increased, there was a clear dependence on the increase in memory consumption. By the way ... it is possible to effectively reduce memory consumption by forcibly straightening the hands of the programmer by some methods of medieval torture. Seriously, in some cases it's enough to go through the program code of the project, find duplicate pieces of code and separate them into separate methods or subprojects; within Django, these will be applications (the Django structure of the site consists of applications). Therefore, periodic refactoring has become an integral part of website development for me.

If you take into account that in this configuration of the site there were three active instances of gunicorn , and also instances of celery, for the work of notifications, the memory consumption with such a project grew to 450 Mb in total, and some information began to be stored in the swap partition under which it was allocated 1Gb drive. As a result, the response of the site was 1.089 seconds according to Alexa Traffic Rank. After increasing the memory to 1 Gb and some optimization of the basic template, the response decreased to 0.857 seconds. I plan to work on the straightforwardness of the hands, the cleanliness of the code, and still enable the caching of the templates.

Site Attendance

In December 2017, the stable attendance of the site grew to 1,050-1150 unique visitors per day, which is very encouraging, and a new goal for me was (besides the development of functionality) to grow the site to 2,000 unique visitors.

The maximum attendance of the site was fixed on December 14, 2017 and amounted to 1,169 unique visitors per day.

But the load on the processor is not as great as you might think. The average daily load on the processor in this configuration is an example of 7 percent.

That is, there is actually no fundamental need to increase the number of processor cores in this server configuration.


In fact, Django on the minimum configuration of the VDS server, in my subjective opinion, can be at the level of 4000-5000 unique visitors with more modest functionality (about three times less). Which is quite good for a server for $5.

At the moment, I just increased the amount of RAM I needed.

If someone is interested in a hoster from whom I rent VDS, then this is TIMEWEB , which I recommend. During the time of using VDS-server there was not a single failure, the company warns about all preventive works and conducts them at night by MSK.

What I definitely would not recommend is to purchase virtual hosting. For Django it's a waste of money and time. Sooner or later you can start to grow and eventually you will need VDS, and there will begin problems with migration due to differences in the directory structure, etc.

For Django I recommend VDS-server of Timeweb hoster .

Virtual hosting with 10 percent discount
Virtual hosting with 10 percent discount
EVILEG offers reliable hosting with a 10% discount for virtual hosting and 5% for VPS
Support the author Donate


Only authorized users can post comments.
Please, Log in or Sign up
May 19, 2019, 1:49 a.m.

Qt - Test 001. Signals and slots

  • Result:78points,
  • Rating points2
May 17, 2019, 1:14 p.m.

Qt - Test 001. Signals and slots

  • Result:42points,
  • Rating points-8
May 17, 2019, 4:18 a.m.

C++ - Тест 003. Условия и циклы

  • Result:57points,
  • Rating points-2
Last comments
May 21, 2019, 8:10 p.m.

Приветствую! Я думаю дойдёт и до этого, но пока изучать его у меня нет желания.
May 20, 2019, 7:20 p.m.
Евгений Легоцкой

Добрый день! Вы не думали разместить репозиторий проекта на GitHub?
May 18, 2019, 2:03 p.m.

Спасибо большое! Вскоре буду разбираться!
May 18, 2019, 9:13 a.m.
Евгений Легоцкой

Добрый день! Отнимать значение общего счётчика можно в деструкторе класса кнопки QDynamicButton::~QDynamicButton(){ ResID--;} При этом я бы ещё переустанавливал значения вс...
May 14, 2019, 10:33 p.m.

Здравствуйте!А не подскажите, как можно при удалении какой либо кнопки, у щётчика отнять значение?Дабы например четвёртой кнопке соответствовал ID 4, а не 5 скажем
Now discuss on the forum
May 24, 2019, 6:48 a.m.
Евгений Легоцкой

Если там будут только перечисления внутри namespace, то жа, достаточно будет заголовочного файла
May 24, 2019, 6:28 a.m.
Андрей Янкович

работает любой http сервер, и можно использовать обсалютно любой портпример <RemoteRepositories> <Repository> <Url>;
May 23, 2019, 2:40 p.m.

Попробовал сделать этот запрос по http и получил json файл. request.setUrl(QUrl("")); Как Вы думаете, почему https не работает и как это и...
May 23, 2019, 10:42 a.m.

Спасибо, помогло.
May 23, 2019, 6:31 a.m.
Евгений Легоцкой

Для задач и граф-то не нужен. Достаточно будет таблицы в локальной базе данных SQLite, в которой указывается задача, время и т.д. В этом разделе есть примеры по работа с базой д...

For registered users on the site there is a minimum amount of advertising

Join us
© EVILEG 2015-2019
Recommend hosting TIMEWEB