summaryrefslogtreecommitdiffstats
path: root/docs/high-performance-netdata.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/high-performance-netdata.md')
-rw-r--r--docs/high-performance-netdata.md167
1 files changed, 0 insertions, 167 deletions
diff --git a/docs/high-performance-netdata.md b/docs/high-performance-netdata.md
deleted file mode 100644
index 89272fe2b5..0000000000
--- a/docs/high-performance-netdata.md
+++ /dev/null
@@ -1,167 +0,0 @@
-<!--
----
-title: "High performance Netdata"
-custom_edit_url: https://github.com/netdata/netdata/edit/master/docs/high-performance-netdata.md
----
--->
-
-# High performance Netdata
-
-If you plan to run a Netdata public on the internet, you will get the most performance out of it by following these
-rules:
-
-## 1. run behind nginx
-
-The internal web server is optimized to provide the best experience with few clients connected to it. Normally a web
-browser will make 4-6 concurrent connections to a web server, so that it can send requests in parallel. To best serve a
-single client, Netdata spawns a thread for each connection it receives (so 4-6 threads per connected web browser).
-
-If you plan to have your Netdata public on the internet, this strategy wastes resources. It provides a lock-free
-environment so each thread is autonomous to serve the browser, but it does not scale well. Running Netdata behind nginx,
-idle connections to Netdata can be reused, thus improving significantly the performance of Netdata.
-
-In the following nginx configuration we do the following:
-
-- allow nginx to maintain up to 1024 idle connections to Netdata (so Netdata will have up to 1024 threads waiting for
- requests)
-- allow nginx to compress the responses of Netdata (later we will disable gzip compression at Netdata)
-- we disable wordpress pingback attacks and allow only GET, HEAD and OPTIONS requests.
-
-```conf
-upstream backend {
- server 127.0.0.1:19999;
- keepalive 1024;
-}
-
-server {
- listen *:80;
- server_name my.web.server.name;
-
- location / {
- proxy_set_header X-Forwarded-Host $host;
- proxy_set_header X-Forwarded-Server $host;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_pass http://backend;
- proxy_http_version 1.1;
- proxy_pass_request_headers on;
- proxy_set_header Connection "keep-alive";
- proxy_store off;
- gzip on;
- gzip_proxied any;
- gzip_types *;
-
- # Block any HTTP requests other than GET, HEAD, and OPTIONS
- limit_except GET HEAD OPTIONS {
- deny all;
- }
- }
-
- # WordPress Pingback Request Denial
- if ($http_user_agent ~* "WordPress") {
- return 403;
- }
-
-}
-```
-
-Then edit `/etc/netdata/netdata.conf` and set these config options:
-
-```conf
-[global]
- bind socket to IP = 127.0.0.1
- access log = none
- disconnect idle web clients after seconds = 3600
- enable web responses gzip compression = no
-```
-
-These options:
-
-- `[global].bind socket to IP = 127.0.0.1` makes Netdata listen only for requests from localhost (nginx).
-- `[global].access log = none` disables the access.log of Netdata. It is not needed since Netdata only listens for
- requests on 127.0.0.1 and thus only nginx can access it. nginx has its own access.log for your record.
-- `[global].disconnect idle web clients after seconds = 3600` will kill inactive web threads after an hour of
- inactivity.
-- `[global].enable web responses gzip compression = no` disables gzip compression at Netdata (nginx will compress the
- responses).
-
-## 2. increase open files limit (non-systemd)
-
-By default Linux limits open file descriptors per process to 1024. This means that less than half of this number of
-client connections can be accepted by both nginx and Netdata. To increase them, create 2 new files:
-
-1. `/etc/security/limits.d/nginx.conf`, with these contents:
-
-```conf
-nginx soft nofile 10000
-nginx hard nofile 30000
-```
-
-2. `/etc/security/limits.d/netdata.conf`, with these contents:
-
-```conf
-netdata soft nofile 10000
-netdata hard nofile 30000
-```
-
-and to activate them, run:
-
-```sh
-sysctl -p
-```
-
-## 2b. increase open files limit (systemd)
-
-Thanks to [@leleobhz](https://github.com/netdata/netdata/issues/655#issue-163932584), this is what you need to raise the
-limits using systemd:
-
-This is based on <https://ma.ttias.be/increase-open-files-limit-in-mariadb-on-centos-7-with-systemd/> and here worked as
-following:
-
-1. Create the folders in /etc:
-
-```bash
-mkdir -p /etc/systemd/system/netdata.service.d
-mkdir -p /etc/systemd/system/nginx.service.d
-```
-
-2. Create limits.conf in each folder as following:
-
-```conf
-[Service]
-LimitNOFILE=30000
-```
-
-3. Reload systemd daemon list and restart services:
-
-```sh
-systemctl daemon-reload
-systemctl restart netdata.service
-systemctl restart nginx.service
-```
-
-You can check limits with following commands:
-
-```sh
-cat /proc/$(ps aux | grep "nginx: master process" | grep -v grep | awk '{print $2}')/limits | grep "Max open files"
-cat /proc/$(ps aux | grep "\/[n]etdata " | head -n1 | grep -v grep | awk '{print $2}')/limits | grep "Max open files"
-```
-
-View of the files:
-
-```sh
-# tree /etc/systemd/system/*service.d/etc/systemd/system/netdata.service.d
-/etc/systemd/system/netdata.service.d
-└── limits.conf
-/etc/systemd/system/nginx.service.d
-└── limits.conf
-
-0 directories, 2 files
-
-# cat /proc/$(ps aux | grep "nginx: master process" | grep -v grep | awk '{print $2}')/limits | grep "Max open files"
-Max open files 30000 30000 files
-
-# cat /proc/$(ps aux | grep "netdata" | head -n1 | grep -v grep | awk '{print $2}')/limits | grep "Max open files"
-Max open files 30000 30000 files
-```
-
-[![analytics](https://www.google-analytics.com/collect?v=1&aip=1&t=pageview&_s=1&ds=github&dr=https%3A%2F%2Fgithub.com%2Fnetdata%2Fnetdata&dl=https%3A%2F%2Fmy-netdata.io%2Fgithub%2Fdocs%2Fhigh-performance-netdata&_u=MAC~&cid=5792dfd7-8dc4-476b-af31-da2fdb9f93d2&tid=UA-64295674-3)](<>)