ubuntuusers.de

Für diese Funktion musst du eingeloggt sein.

service nginx, upload begrenzen mit trickle

Status: Gelöst | Ubuntu-Version: Ubuntu 21.10 (Impish Indri)
Antworten |

wolke_123

Anmeldungsdatum:
3. Juli 2022

Beiträge: Zähle...

Hallo zusammen,

ich würde gerne den upload meines "nginx-Servers" mit "trickle" begrenzen.

Ich weiß es gibt auch "wondershaper", welches aber nur die Geschwindigkeit der Netzwerkkarte limitiert und nicht einer einzelnen Anwednung. Da auf dem Rechner auch noch andere Anwenungen, wie zum Beispiel ein VPN-Server, laufen, möchte ich gerne nur die Bandbreite für "nginx" begrenzen.

Wenn ich zum Beispiel "sudo trickle -s -u 1000 service nginx restart" ausführe, wird der upload nicht begrenzt.

Ich habe auch probiert die Konfigurationsdateien von nginx unter "/etc/init.d" anzupassen. Aber wirklich weitergekommen bin ich nicht.

Vielleicht hat ja einer die Lösung. Über die Forensuche bin ich leider nicht weitergekommen.

Danke schon mal im Vorraus!

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7782

wolke_123

(Themenstarter)

Anmeldungsdatum:
3. Juli 2022

Beiträge: 3

frostschutz schrieb:

http://nginx.org/en/docs/http/ngx_http_core_module.html#limit_rate ?

Leider funktioniert genau das mit "limit_rate" für nginx nicht so wie ich das möchte.

Diese Limitierung gilt pro Verbindung. Das heißt selbst wenn ich die Anzahl der Verbindungen auf eine beschränke pro user... verdoppelt sich die genutzte Bandbreite, sobald zwei Benutzer auf den Server zugreifen.

Ich benötige eine globale Limiterung. So, dass die gesamte genutzte Bandbreite unter dem Limit bleibt, das ich ich gesetzt habe.

Mit trickle sollte es eigentlich möglich sein, nur bekomme ich es nicht hin, dass nginx durch trickle limitiert wird.

Trotzdem Danke erstmal!

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11245

Wohnort: München

wolke_123 schrieb:

Wenn ich zum Beispiel "sudo trickle -s -u 1000 service nginx restart" ausführe, wird der upload nicht begrenzt.

Damit führst du ja nicht nginx im Kontext von trickle aus, sondern das Programm service, das mit Systemd redet (welches die Kontrolle über den Prozess hat)

Ich habe auch probiert die Konfigurationsdateien von nginx unter "/etc/init.d" anzupassen. Aber wirklich weitergekommen bin ich nicht.

Das nginx-Paket kommt mit einer Systemd-Unit /lib/systemd/system/nginx.service (vgl. https://packages.ubuntu.com/impish/all/nginx-common/filelist) - wenn die vorhanden ist, wird die SysV-Init Datei ignoriert, daher haben Änderungen an dieser Datei keinen Effekt.

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7782

OK, also es scheint so zu sein, daß trickle ausschließlich mit select() funktioniert, nginx nutzt jedoch u.a. auch epoll()...

https://github.com/mariusae/trickle/issues/25

Dann hat nginx auch noch mehrere Prozesse...

Ich würde es dann doch per Traffic Shaping probieren (kein Wondershaper), HFSC oder HTB, kann man nach dem Port filtern... alternativ einen nginx an ein virtuelles Netzwerkinterface hängen das limitiert ist, falls das klappt und dann nginx<->nginx Proxy. Hmmm.

Bestimmt gibts dafür eine fertige Lösung, habe aber auf die schnelle nichts gefunden für nginx. Vielleicht gibts ja auch ein anderen Webserver der hier mehr Ratelimit features bietet.

seahawk1986 schrieb:

Damit führst du ja nicht nginx im Kontext von trickle aus, sondern das Programm service, das mit Systemd redet (welches die Kontrolle über den Prozess hat)

Das kanns natürlich auch sein, gut aufgepasst. ☺

sebix Team-Icon

Moderator, Webteam

Anmeldungsdatum:
14. April 2009

Beiträge: 5582

frostschutz schrieb:

Bestimmt gibts dafür eine fertige Lösung, habe aber auf die schnelle nichts gefunden für nginx. Vielleicht gibts ja auch ein anderen Webserver der hier mehr Ratelimit features bietet.

zB https://doc.lighttpd.net/lighttpd2/all.html#mod_throttle https://doc.lighttpd.net/lighttpd2/all.html#mod_throttle__action_io-throttle

wolke_123

(Themenstarter)

Anmeldungsdatum:
3. Juli 2022

Beiträge: 3

Moin moin,

ich weiß es ist ne ganze Weile her, aber für diejenigen die es interessiert, ich hab eine für mich befriedigende Lösung gefunden. Hiermit kann ich systemweit den upload ins Internet begrenzen. Der lokale Netzwerkverkehr wird davon nicht betroffen.

Hier der Link, es ist der vorletzte Post: https://www.linuxquestions.org/questions/linux-server-73/how-to-limit-bandwith-on-one-eth0-only-for-internet-741459/

Die Bandbreiten für externen und internen Traffic müssen angepasst werden, ebenso wie das Subnet und natürlich die Netzwerkkarte für die der Datenverkehr reguliert werden soll.

Allerdings wird nicht "trickle" sondern "wondershaper" und "tc" genutzt.

Done!

Antworten |