Another day, another update.

More troubleshooting was done today. What did we do:

  • Yesterday evening @phiresky@[email protected] did some SQL troubleshooting with some of the lemmy.world admins. After that, phiresky submitted some PRs to github.
  • @[email protected] created a docker image containing 3PR’s: Disable retry queue, Get follower Inbox Fix, Admin Index Fix
  • We started using this image, and saw a big drop in CPU usage and disk load.
  • We saw thousands of errors per minute in the nginx log for old clients trying to access the websockets (which were removed in 0.18), so we added a return 404 in nginx conf for /api/v3/ws.
  • We updated lemmy-ui from RC7 to RC10 which fixed a lot, among which the issue with replying to DMs
  • We found that the many 502-errors were caused by an issue in Lemmy/markdown-it.actix or whatever, causing nginx to temporarily mark an upstream to be dead. As a workaround we can either 1.) Only use 1 container or 2.) set proxy_next_upstream timeout; max_fails=5 in nginx.

Currently we’re running with 1 lemmy container, so the 502-errors are completely gone so far, and because of the fixes in the Lemmy code everything seems to be running smooth. If needed we could spin up a second lemmy container using the proxy_next_upstream timeout; max_fails=5 workaround but for now it seems to hold with 1.

Thanks to @[email protected] , @[email protected] , @[email protected], @[email protected] , @[email protected] , @[email protected] for their help!

And not to forget, thanks to @[email protected] and @[email protected] for their continuing hard work on Lemmy!

And thank you all for your patience, we’ll keep working on it!

Oh, and as bonus, an image (thanks Phiresky!) of the change in bandwidth after implementing the new Lemmy docker image with the PRs.

Edit So as soon as the US folks wake up (hi!) we seem to need the second Lemmy container for performance. So that’s now started, and I noticed the proxy_next_upstream timeout setting didn’t work (or I didn’t set it properly) so I used max_fails=5 for each upstream, that does actually work.

  • phiresky@lemmy.world
    link
    fedilink
    arrow-up
    906
    arrow-down
    3
    ·
    edit-2
    1 year ago

    server load is too low, everyone upvote more stuff so i can optimize more

    edit: guess there is some more work to be done 😁

    • Carnelian@lemmy.world
      link
      fedilink
      arrow-up
      96
      arrow-down
      1
      ·
      1 year ago

      I agree. Felt it immediately when I started browsing. Everything is faster and more responsive, on top of the error messages disappearing

  • Gnothi@lemmy.world
    link
    fedilink
    arrow-up
    127
    arrow-down
    3
    ·
    1 year ago

    This is why having a big popular instance isn’t all bad. It helps detect and fix the scaling problems and inefficiencies for all the other 1000s of instances out there!

  • kionay@lemmy.world
    link
    fedilink
    arrow-up
    114
    ·
    1 year ago

    You guys had better quit it with all this amazing transparency or it’s going to completely ruin every other service for me. Seriously though amazing work and amazing communication.

  • sv1sjp@lemmy.world
    link
    fedilink
    arrow-up
    91
    ·
    1 year ago

    Thank you guys for your awesome work!

    Also to other people: DONATE TO FOSS PROJECTS. If 50.000 people donate only 0.5€, we have 25.000€ for funding the servers, coding, motivating/ people etc. Just don’t take a cup of coffee for 1 day. We are already 2 millions in Lemmy instances. We can build a decentralized world together!!

    • wmrch@lemmy.world
      link
      fedilink
      arrow-up
      24
      ·
      1 year ago

      You can pry my cup of coffee from my my cold, dead hands.

      Will donate anyway, I really want this project to keep going.

      • sv1sjp@lemmy.world
        link
        fedilink
        arrow-up
        18
        ·
        edit-2
        1 year ago

        For example, if you speak a second language, you can even help with translation in projects. Its very easy. E.g. I translated the Jerboa (Lemmy client for Android) in Greek 2-3 days ago. I needed only 1 hour to finish and special 15-20 minutes for fixes that I missed, yesterday.

      • DopamineDeficient@lemmy.world
        link
        fedilink
        arrow-up
        3
        ·
        1 year ago

        If there’s a thing you really need to pay in a foreign currency, look into Revolut or Wise. Since I occasionally have to pay stuff in Turkish lira, GBP and donated to USD-only Receivers I like to keep Revolut as my secondary bank account since exchanging one currency to another is completely free!

  • Spectator@lemmy.world
    link
    fedilink
    English
    arrow-up
    80
    ·
    1 year ago

    I’m not sure wtf you just said, but lemmy.world feels very smooth today, so thank you for your continued hard work!

  • Marxine@lemmy.world
    link
    fedilink
    arrow-up
    80
    ·
    1 year ago

    Boy does it feel good to have those reports and understand the work you guys do. It’s really inspiring! Thanks for your hard work, everything has been silk smooth! This instance is really great, Lemmy and its devs are really amazing and I feel at home in a nice, cozy community.

  • sirnak@lemmy.world
    link
    fedilink
    arrow-up
    78
    ·
    1 year ago

    Am I getting this correct: the whole lemmy.world instance run in one single container on one single host?

    • cley_faye@lemmy.world
      link
      fedilink
      arrow-up
      45
      ·
      1 year ago

      You’d be surprised at how much performance this kind of setup can squeeze off. Often the limitation is more on the DB/storage than network handling and processing power.

      • eek2121@lemmy.world
        link
        fedilink
        arrow-up
        24
        ·
        1 year ago

        This. Most of the time, the bottleneck will be the database backend.

        Curious if lemmy.world uses separate reader/writer instances.

    • Bappity@lemmy.world
      link
      fedilink
      arrow-up
      16
      ·
      1 year ago

      if it runs this well on a single container, considering the amount of users it has, I fear the power it’d hold with more

    • tempest@lemmy.ca
      link
      fedilink
      arrow-up
      10
      ·
      1 year ago

      Lemmy is built on an async work stealing runtime and you can get very large instances from Amazon and the like.

      I’m sure the instance isn’t massive but number of containers and a single “host” are not great indicators of efficiency.

  • ericjmorey@lemmy.world
    link
    fedilink
    arrow-up
    64
    ·
    edit-2
    1 year ago

    Submitting PRs is literally the most effective response that helps everyone who uses Lemmy. Thanks to you all.

    • clutchmatic@lemmy.world
      link
      fedilink
      arrow-up
      24
      ·
      1 year ago

      Some managers of the devs are not that interested in significant optimizations… Depends on what incentives and company culture drives them

    • Zzombiee2361@lemmy.world
      link
      fedilink
      arrow-up
      12
      ·
      1 year ago

      Some company would rather throw more hardware at the problem and make the devs work on another useless feature no one use

      • Kristho@lemm.ee
        link
        fedilink
        arrow-up
        1
        ·
        1 year ago

        Yes! And that’s a very short seighted solution. And it feels so good to improve performance in code! That’s extra performance for “free” 😎