Skip to content

NODEBB: Nginx error performance & High CPU

Solved Performance
69 3 62.9k 2
  • @phenomlab

    Ok I will see it for better worker_processes value

    I add a rate limite request and limit_conn_zone on http block and vhost block :

    – nginx.conf:

    http {
    
    	#Requete maximun par ip 
    	limit_req_zone $binary_remote_addr zone=flood:10m rate=100r/s; 
    	#Connexions maximum par ip 
    	limit_conn_zone $binary_remote_addr zone=ddos:1m;
    
    -- vhost.conf :
            location / {
    				
    				limit_req zone=flood burst=100 nodelay; 
    				limit_conn ddos 10;
    

    –> I have test other value for rate and burst but they cause problem access to the forum. If you have better, I take it

    I add today a proxy_read_timeout on vhost.conf (60 by default)

    proxy_read_timeout 180;
    

    I have deactivate underattack mode on CF and change for high Level

    I have add other rules on CF waf :

    9059db6c-f4f3-4415-bb47-ab88b2b41861-image.png

    wrote on last edited by
    #26

    @DownPW what settings do you have in advanced (in settings) for rate limit etc?

  • @DownPW what settings do you have in advanced (in settings) for rate limit etc?

    wrote on last edited by
    #27

    @phenomlab said in NODEBB: Nginx error performance & High CPU:

    @DownPW what settings do you have in advanced (in settings) for rate limit etc?

    In cloudflare ?

  • wrote on last edited by DownPW
    #28

    @phenomlab

    I wanted to test awstats on virtualmin with root account and it hasn’t updated since August 2022.

    I wanted to regenerate the files but I have a problem of rights.

    df12b039-076d-4e64-9a8d-ad6580ed57dc-image.png
    4030eec2-29ce-4dcf-83f6-adc60f87be5e-image.png

    What do you think ? and how t ore-generate a rapport correctly

    I would like to use it to better manage the @ips that connect to the server

  • @phenomlab said in NODEBB: Nginx error performance & High CPU:

    @DownPW what settings do you have in advanced (in settings) for rate limit etc?

    In cloudflare ?

    wrote on last edited by
    #29

    @DownPW no, sorry - in NodeBB ACP

  • @phenomlab

    I wanted to test awstats on virtualmin with root account and it hasn’t updated since August 2022.

    I wanted to regenerate the files but I have a problem of rights.

    df12b039-076d-4e64-9a8d-ad6580ed57dc-image.png
    4030eec2-29ce-4dcf-83f6-adc60f87be5e-image.png

    What do you think ? and how t ore-generate a rapport correctly

    I would like to use it to better manage the @ips that connect to the server

    wrote on last edited by
    #30

    @DownPW from recollection, awstats is accessible via the web front end, so (for example) https://mydomain.com/awstats

    However, as you are pushing everything into a reverse proxy you’ll need to add a custom route in the nginx.conf file you are using on the website so this can be rendered outside of NodeBB.

  • @DownPW no, sorry - in NodeBB ACP

    wrote on last edited by
    #31

    @phenomlab said in NODEBB: Nginx error performance & High CPU:

    @DownPW no, sorry - in NodeBB ACP

    Here is the value

    28e6dd12-e727-4a6a-a06f-b7c7dd3ed431-image.png

  • @phenomlab said in NODEBB: Nginx error performance & High CPU:

    @DownPW no, sorry - in NodeBB ACP

    Here is the value

    28e6dd12-e727-4a6a-a06f-b7c7dd3ed431-image.png

    wrote on last edited by
    #32

    @DownPW what is the result of disabling it altogether? That will resolve the 503 rate limit error but could we leave the system exposed to bring overwhelmed.

  • @DownPW what is the result of disabling it altogether? That will resolve the 503 rate limit error but could we leave the system exposed to bring overwhelmed.

    wrote on last edited by
    #33

    @DownPW you should also review this

    https://docs.nodebb.org/configuring/scaling/

    In particular, the part concerning proxied assets.

  • @DownPW from recollection, awstats is accessible via the web front end, so (for example) https://mydomain.com/awstats

    However, as you are pushing everything into a reverse proxy you’ll need to add a custom route in the nginx.conf file you are using on the website so this can be rendered outside of NodeBB.

    wrote on last edited by
    #34

    @phenomlab said in NODEBB: Nginx error performance & High CPU:

    @DownPW from recollection, awstats is accessible via the web front end, so (for example) https://mydomain.com/awstats

    However, as you are pushing everything into a reverse proxy you’ll need to add a custom route in the nginx.conf file you are using on the website so this can be rendered outside of NodeBB.

    Thats why I have a permission error like the screen? Odd

    Nope, Awstats is accessible like this via Virtualmin:

    https://XXXX:8443/virtualmin-awstats/view.cgi?config=XXXXXX.XX

    a3404ab3-4f2b-4623-9858-534ac8507bce-image.png
    7597a4ac-22e5-4cd6-884c-e149dcb6edbe-image.png
    f8285325-3072-4668-869b-e5e6152c5641-image.png

    I have jsut an error of permission whe nI test to regenerate a Report because the script can’t access to log file

  • @DownPW what is the result of disabling it altogether? That will resolve the 503 rate limit error but could we leave the system exposed to bring overwhelmed.

    wrote on last edited by
    #35

    @phenomlab said in NODEBB: Nginx error performance & High CPU:

    @DownPW what is the result of disabling it altogether? That will resolve the 503 rate limit error but could we leave the system exposed to bring overwhelmed.

    Disabling What ? Traffic management? HSTS ?

  • @phenomlab said in NODEBB: Nginx error performance & High CPU:

    @DownPW from recollection, awstats is accessible via the web front end, so (for example) https://mydomain.com/awstats

    However, as you are pushing everything into a reverse proxy you’ll need to add a custom route in the nginx.conf file you are using on the website so this can be rendered outside of NodeBB.

    Thats why I have a permission error like the screen? Odd

    Nope, Awstats is accessible like this via Virtualmin:

    https://XXXX:8443/virtualmin-awstats/view.cgi?config=XXXXXX.XX

    a3404ab3-4f2b-4623-9858-534ac8507bce-image.png
    7597a4ac-22e5-4cd6-884c-e149dcb6edbe-image.png
    f8285325-3072-4668-869b-e5e6152c5641-image.png

    I have jsut an error of permission whe nI test to regenerate a Report because the script can’t access to log file

    wrote on last edited by
    #36

    @DownPW said in NODEBB: Nginx error performance & High CPU:

    Thats why I have a permission error like the screen? Odd

    No, not at all. That error is because www-data owns the files when it should be the account you are using to run the website itself under.

  • @DownPW said in NODEBB: Nginx error performance & High CPU:

    Thats why I have a permission error like the screen? Odd

    No, not at all. That error is because www-data owns the files when it should be the account you are using to run the website itself under.

    wrote on last edited by
    #37

    @phenomlab said in NODEBB: Nginx error performance & High CPU:

    @DownPW said in NODEBB: Nginx error performance & High CPU:

    Thats why I have a permission error like the screen? Odd

    No, not at all. That error is because www-data owns the files when it should be the account you are using to run the website itself under.

    I thought that was weird 😉

    strange than that.

    –> Would you have a solution so that I can regenerate the report and use awstats via virtualmin?

  • @phenomlab said in NODEBB: Nginx error performance & High CPU:

    @DownPW said in NODEBB: Nginx error performance & High CPU:

    Thats why I have a permission error like the screen? Odd

    No, not at all. That error is because www-data owns the files when it should be the account you are using to run the website itself under.

    I thought that was weird 😉

    strange than that.

    –> Would you have a solution so that I can regenerate the report and use awstats via virtualmin?

    wrote on last edited by
    #38
  • wrote on last edited by DownPW
    #39

    @phenomlab said in NODEBB: Nginx error performance & High CPU:

    @DownPW try this
    https://manpages.org/awstats

    It worked with the following command (very long) in cli but I’m afraid it won’t work with the virtualmin module

    awstats -config=XXX-XXX.XXX -update
    

    9085ad1b-04c0-4172-bdc3-608288fc0800-image.png

  • @phenomlab said in NODEBB: Nginx error performance & High CPU:

    @DownPW try this
    https://manpages.org/awstats

    It worked with the following command (very long) in cli but I’m afraid it won’t work with the virtualmin module

    awstats -config=XXX-XXX.XXX -update
    

    9085ad1b-04c0-4172-bdc3-608288fc0800-image.png

    wrote on last edited by
    #40

    @DownPW yes, that was a command line to get you the immediate information you needed. Did you try adding the necessary config to nginx in order that it bypasses the reverse proxy?

  • Hello

    Since yesterday, we have been experiencing a massive influx of new users.

    Today we have more than 1000 simultaneous connections (account creation, participation in topics, etc.)

    I had a lot of issues with Nginx that I think I got fixed.

    I have several “worker_connections is too long” & “too many openfiles” errors on nginx log :

    48103f1b-f4f0-496b-bb5d-bd870b1807fd-image.png
    f551f1f9-b9e5-4b57-a89f-af14e2675a3f-image.png

    I think I solved his 2 problems in the following way :

    systemctl edit --full nginx.service
    
    	[Service]
    	LimitNOFILE=70000
    
    nano /etc/nginx/nginx.conf
    	worker_rlimit_nofile 70000; 
    
    events {
    	# worker_connections 768;
    	worker_connections 65535;
    	# multi_accept on;
    	multi_accept on; 
    }
    

    I have “client intended to send too large body” errors too :
    bba58f12-0ca4-4fe7-9d49-ad0ef994b37d-image.png

    I think I solved this problem in the following way :

    nano /etc/nginx/nginx.conf
    	http {
    
    	##
    	# Basic Settings
    	##
    
    	client_max_body_size 10M; 
    

    –> I hope this will be enough for Nginx.


    But now, I have a problem of CPU performance (sometimes, not ) which causes nodebb 503 errors (not nginx) or latencies because nodeJS and mongodb takes a lot of CPU.

    1ced94bf-f56c-4d2a-a701-8f39c8d2868d-image.png

    – Would there be tweaks for nodejs, nodebb or mongodb to prevent the influx of users from draining the CPU - RAM ?

    – If you have better values for nginx error (see above the topic) or better fix, tell me 🙂

    Thanks in advance @phenomlab

    wrote on last edited by
    #41

    @DownPW one day a year, we have the same problem in our forum, where several thousand users become online at the same minute and get similar problems… but we are getting better each year at handling this…

    I do not have full technical details about our solution but I know for sure that using NodeBB that listens to three ports help… 4567, 4568, and 4569… Is your NodeBB set up this way?

  • @DownPW one day a year, we have the same problem in our forum, where several thousand users become online at the same minute and get similar problems… but we are getting better each year at handling this…

    I do not have full technical details about our solution but I know for sure that using NodeBB that listens to three ports help… 4567, 4568, and 4569… Is your NodeBB set up this way?

    wrote on last edited by
    #42

    @crazycells said in NODEBB: Nginx error performance & High CPU:

    4567, 4568, and 4569… Is your NodeBB set up this way?

    It’s not (I set their server up). Sudonix is not configured this way either, but from memory, this also requires redis to handle the session data. I may configure this site to do exactly that.

  • @crazycells said in NODEBB: Nginx error performance & High CPU:

    4567, 4568, and 4569… Is your NodeBB set up this way?

    It’s not (I set their server up). Sudonix is not configured this way either, but from memory, this also requires redis to handle the session data. I may configure this site to do exactly that.

    wrote on last edited by
    #43

    @phenomlab said in NODEBB: Nginx error performance & High CPU:

    @crazycells said in NODEBB: Nginx error performance & High CPU:

    4567, 4568, and 4569… Is your NodeBB set up this way?

    It’s not (I set their server up). Sudonix is not configured this way either, but from memory, this also requires redis to handle the session data. I may configure this site to do exactly that.

    yep it’s not but it interests me a lot.
    I see the documentation but I would have to adapt to our configuration and is it really worth doing?
    Where I put ionode directives? on nginx.conf or vhost your_website.conf ? I think on nginx.conf

    And where put proxy_pass directive? on nginx.conf or vhost your_website.Conf ?

    It’s still pretty blurry but I just took a look at it;

    https://docs.nodebb.org/configuring/scaling/

  • @phenomlab said in NODEBB: Nginx error performance & High CPU:

    @crazycells said in NODEBB: Nginx error performance & High CPU:

    4567, 4568, and 4569… Is your NodeBB set up this way?

    It’s not (I set their server up). Sudonix is not configured this way either, but from memory, this also requires redis to handle the session data. I may configure this site to do exactly that.

    yep it’s not but it interests me a lot.
    I see the documentation but I would have to adapt to our configuration and is it really worth doing?
    Where I put ionode directives? on nginx.conf or vhost your_website.conf ? I think on nginx.conf

    And where put proxy_pass directive? on nginx.conf or vhost your_website.Conf ?

    It’s still pretty blurry but I just took a look at it;

    https://docs.nodebb.org/configuring/scaling/

    wrote on last edited by
    #44

    @DownPW It’s more straightforward than it sounds, although can be confusing if you look at it for the first time. I’ve just implemented it here. Can you provide your nginx config and your config.json (remove password obviously)

    Thanks

  • @DownPW yes, that was a command line to get you the immediate information you needed. Did you try adding the necessary config to nginx in order that it bypasses the reverse proxy?

    wrote on last edited by
    #45

    @phenomlab said in NODEBB: Nginx error performance & High CPU:

    @DownPW yes, that was a command line to get you the immediate information you needed. Did you try adding the necessary config to nginx in order that it bypasses the reverse proxy?

    @phenomlab

    Nope because I don’t know what it will be used for.

    I access the report just fine without it.

    I would just like to use webmin to generate it every day automatically.
    I would just like to settle this permissions thing.


Did this solution help you?
Did you find the suggested solution useful? Support 💗 Sudonix with a coffee ☕
If your organisation needs deeper expertise around infrastructure, security, or technology leadership, learn more about Phenomlab Ltd. Many of the deeper technical guides behind Sudonix are published there.

Related Topics
  • 4 Votes
    3 Posts
    2k Views
    crazycells
    thanks @DownPW ! this is definitely very helpful.
  • What’s going on with NodeBB?

    Performance nodebb script die
    20
    8 Votes
    20 Posts
    5k Views
    phenomlab
    @cagatay The most reliable way to upgrade Node.js on Ubuntu depends on how you originally installed it. Method 1: Using NVM (Recommended) If you already use Node Version Manager (NVM), upgrading is simple. NVM allows you to keep both versions and switch between them if needed. Install Node 22: nvm install 22 Switch to Node 22: nvm use 22 Set it as your default: nvm alias default 22 Verify the change: node -v Method 2: Using NodeSource (PPA) If you installed Node.js via apt using the NodeSource repository, you need to update the repository script to point to the new version. Remove the old NodeSource list (optional but cleaner): sudo rm /etc/apt/sources.list.d/nodesource.list Download and run the NodeSource setup script for Node 22: curl -fsSL [https://deb.nodesource.com/setup_22.x](https://deb.nodesource.com/setup_22.x) | sudo -E bash - Install/Upgrade Node.js: sudo apt-get install -y nodejs Verify the installation: node -v Method 3: Using the ‘n’ Package If you have npm installed, you can use the n interactive manager. Clear the npm cache: sudo npm cache clean -f Install the ‘n’ helper: sudo npm install -g n Install Node 22: sudo n 22 Update your shell: hash -r Troubleshooting Permission Denied: If you see permission errors using Method 2 or 3, ensure you are using sudo. Path Issues: If node -v still shows version 20 after upgrading via NVM, restart your terminal or run source ~/.bashrc. Conflicts: Avoid mixing these methods. If you switch from apt to nvm, it is best to sudo apt remove nodejs first to avoid path conflicts.
  • NodeBB recent cards customisation

    Solved Customisation nodebb recent cards
    3
    1
    2 Votes
    3 Posts
    1k Views
    JAC
    @phenomlab thank you very much for the assistance Mark, massively appreciated as always. The great thing about this is it’s all documented for other NodeBB users that come looking for solutions . Looks far better .
  • What plugins are being used here on Sudonix?

    Solved General nodebb plugins development
    6
    5 Votes
    6 Posts
    2k Views
    phenomlab
    @Roki-Antic Welcome! This site isn’t running Persona, but Harmony - a very heavily customised version at that. Do you have a URL where your site is currently located that is publicly accessible? Feel free to PM this info if you do not want to disclose here. Happy to help with any customisation needs.
  • Email validation NodeBB

    Bugs nodebb
    21
    3 Votes
    21 Posts
    10k Views
    phenomlab
    @Panda said in Email validation NodeBB: Did you configure that as a custom change to the usual quote icon. How do you do that? I notice on NodeBB site its a solid blue quotes Yes, I changed it. NodeBB by default users the free font awesome library whereas I use the pro (paid) version SDK have access to a wider set of icons, and at different thicknesses etc. The change of colour is just simple CSS.
  • Podcast Share NodeBB

    Solved Configure podcast nodebb
    15
    4 Votes
    15 Posts
    5k Views
    phenomlab
    @cagatay You could experiment with nodebb-plugin-ns-embed but I expect the x-origin tag on the remote site to prevent playback.
  • Adding fileWrite to nodebb code

    Solved Configure nodebb
    16
    1
    5 Votes
    16 Posts
    5k Views
    phenomlab
    @eveh this might be a question for the NodeBB Devs themselves. In all honesty, I’m not entirely sure without having to research this myself.
  • NodeBB 1.19.3

    Solved Performance nodebb 1.19.3 performance
    33
    4 Votes
    33 Posts
    16k Views
    DownPW
    @phenomlab I find the problem Mark The error message indicated this path : http://localhost:4567/assets/plugins/nodebb-plugin-emoji/emoji/styles.css?v=6983dobg16u I change the path url on config.json [image: 47bacc80-f141-41e4-a261-3f8d650cc6f6-image.png] And all it’s good Weird, I didn’t have to change that path before 1.19.3 But this does not prevent the problem from a clean install with Emoji Plugin EDIT: After test, that resolv the problem installation for 1.18.x but not for 1.19.x (I have other error message when I run ./nodebb Setup For resume: NodeJS 16_x with 1.18.x is ok