Skip to content

Which gets more visitors

General
  • We currently have a site that uses a flarum. The number of instant visitors is around 2K. Every minute 15-20 new topics are opened and hundreds of posts are written. Our 32 CPU 64 GB VDS server often has difficulty handling this traffic. Moreover, we cannot use basic forum plugins such as websocket sitemap. We are planning to switch to NodeBB or Discourse.

    Can you handle this discourse better or NodeBB?

    Our database size is about 16GB. Since NodeBB is written with NodeJS, it needs to be more performant, but I haven’t been able to test it yet.

  • @kurulumu-net said in Which gets more visitors:

    Our 32 CPU 64 GB VDS server often has difficulty handling this traffic.

    This is quite concerning. There’s no way on this planet that a server with that power is going to be overwhelmed by a forum - even with that many visitors. What else is running on this server ?

    Moreover, we cannot use basic forum plugins such as websocket sitemap

    Can you elaborate more on this point ?

    Our database size is about 16GB. Since NodeBB is written with NodeJS, it needs to be more performant, but I haven’t been able to test it yet.

    It’s not really feasible to compare NodeBB with Flarum in the structural sense, as they are completely different architectures. On the one hand, PHP is always going to be slow owing to it synchronous nature - for example, tasks are executed sequentially, meaning there is always going to be a bottleneck of sorts whilst other queued tasks have to wait for the one in front to complete before they are processed.

    Sure, a queuing system can help here (as Flarum has introduced) although the issue with PHP still remains - with a queue, you only “cut” the wait time, not completely eliminate it.

    NodeJS works asynchronously, is multi-threaded, and will process as many tasks as you throw at it. It is way more efficient than PHP will ever be owing to it structure. As NodeBB and Flarum are both SPA based applications, NodeJS wins hands down in the speed criterion. Remember that PHP needs to parse and process an entire page before it can be displayed, whereas NodeJS doesn’t.

    Technologies (in my experience) such as Varnish, Redis etc., do not really make that much difference if the PHP code is substandard, or MySQL queries are poorly executed with little or no indexes.

    MongoDB on the other hand, being NoSQL operates at a superior speed to MySQL - a relational database simply cannot match one without relationships, but handles data in groups. GRAV for example moved away from database structures to flat file storage as access speeds were superior. Moreover, NoSQL does not suffer from the same SQL attack vectors that relational databases do, and this makes them far more difficult to break into (not impossible - nothing ever is).

    Discourse uses PostGres and Ruby on Rails. Additionally, unless you are willing to use docker containers, there is little to no support for your installation as the devs won’t entertain it. In my mind, this alone makes Discourse far less appealing for those not wanting to carve their servers into segments. Great for security, not so great for overall administration.

    Because NodeBB uses MongoDB (NoSQL), it is structured completely differently to MySQL. If you have an existing site, don’t expect to be able to simply convert it from Flarum to NodeBB, as no current conversion exists, and when I asked the question of the NodeBB devs around providing conversion as a service, their quote was in excess of USD 10,000 for a database that was no more than 100Mb in size 😮

    Flarum, like all other forum software fits very much into the “Hotel California” paradigm - “You can check out any time you like, but you can never leave…”

    This part taken from https://sudonix.com/topic/16/what-is-the-reason-for-choosing-node-bb-over-flarum/21?_=1638102580036

    What I mean by this is that you are buying into an ecosystem that offers no easy or readily available path out. If you plan to stay for the long term and there is a clear progression path from that project meaning it’s a viable route, then great.

    However, all of these platforms (except WordPress perhaps) have a way of ingesting data from other sources, but little to no way at all of taking that data somewhere else. This is nothing against any of those platforms, but the fundamental issue here is that whilst it’s probably easy to move into another product, it’s a different story altogether when you want to leave and take your data with you.

    Moving from Flarum to NodeBB isn’t a simple affair. if you look at
    https://metabullet.com

    which was based on Flarum before I decided to move, then you’ll see what I mean. I just “started again” under NodeBB. With a 16Gb database and thousands of members, this is never go to be a simple affair, and it’s likely the cost to move out and keep your data will be a very expensive one - ultimately, prohibitive without making some form of sacrifice - usually in the sense of leaving data behind in a legacy domain, and reinventing the wheel. For me, this wasn’t too tough as Metabullet was in it’s infancy, but for a mature site…

  • @phenomlab said in Which gets more visitors:

    Bu sunucuda başka neler çalışıyor?

    It’s a stand-alone forum. When we turn off the search feature in Flarum (hide the search form with CSS) resources become plentiful quickly. CPU 20%, Ram 40% circulate. But when the search feature works, the CPU immediately swells to 100% and the site dies.

    According to my research there is a script for Discourse migration. But it is mostly for small scale sites. It does not seem possible to move a site with a huge database like us. At least through this script.

    I had no idea that the NodeBB migration could be this expensive. Terrible 🙂

  • @kurulumu-net

    But when the search feature works, the CPU immediately swells to 100% and the site dies.

    That sounds very much like a MySQL issue to me. I’m aware that this is an existing issue in Flarum in relation to performance, and clearly, it’s still not fixed.

    I had no idea that the NodeBB migration could be this expensive. Terrible

    Yes, exactly that. To me, it would appear that I’d need to finance the development and subsequent build of any package, then they could resell the same thing to someone else without the need for any additional effort on their part = high profit margin. The issue I have with this model is that I’d foot the (somewhat huge) bill for what amounts to a minor upgrade for me, but quite the money spinner for NodeBB.

    Here the link to that thread

    https://community.nodebb.org/post/84581


  • 13 Votes
    27 Posts
    2k Views

    yuuuuu.png

  • Nodebb design

    Solved General
    2
    1 Votes
    2 Posts
    153 Views

    @Panda said in Nodebb design:

    One negative is not being so good for SEO as more Server side rendered forums, if web crawlers dont run the JS to read the forum.

    From recollection, Google and Bing have the capability to read and process JS, although it’s not in the same manner as a physical person will consume content on a page. It will be seen as plain text, but will be indexed. However, it’s important to note that Yandex and Baidu will not render JS, although seeing as Google has a 90% share of the content available on the web in terms of indexing, this isn’t something you’ll likely lose sleep over.

    @Panda said in Nodebb design:

    The “write api” is preferred for server-to-server interactions.

    This is mostly based around overall security - you won’t typically want a client machine changing database elements or altering data. This is why you have “client-side” which could be DOM manipulation etc, and “server-side” which performs more complex operations as it can communicate directly with the database whereas the client cannot (and if it can, then you have a serious security flaw). Reading from the API is perfectly acceptable on the client-side, but not being able to write.

    A paradigm here would be something like SNMP. This protocol exists as a UDP (UDP is very efficient, as it is “fire and forget” and does not wait for a response like TCP does) based service which reads performance data from a remote source, thus enabling an application to parse that data for use in a monitoring application. In all cases, SNMP access should be “RO” (Read Only) and not RW (Read Write). It is completely feasible to assume complete control over a firewall for example by having RW access to SNMP and then exposing it to the entire internet with a weak passphrase.

    You wouldn’t do it (at least, I hope you wouldn’t) and the same ethic applies to server-side rendering and the execution of commands.

  • 1 Votes
    4 Posts
    174 Views

    @Vijay-Kumavat-0 I think you’d be better off customising the plugin above to be honest. It seems like you’d be reinventing the wheel otherwise.

    I’d modify

    /nodebb/node_modules/nodebb-rewards-essentials/lib/conditions.js
    /nodebb/node_modules/nodebb-rewards-essentials/lib/rewards.js

    These seem to be the two files that control what is in the dropdown lists.

  • 2 Votes
    4 Posts
    187 Views

    @Panda said in Sidebar Widget is no longer on the side!:

    Ah, so sidebar wont work on mobile?

    Correct. If you review the docs on bootstrap, you’ll notice that it is designed on a grid system

    https://getbootstrap.com/docs/5.0/layout/grid/

    What I mean by changing the category is moving it on here to general as you posted it in bugs, when it isn’t.

  • CURL GET

    Solved General
    2
    0 Votes
    2 Posts
    206 Views

    is working

    $curl = curl_init($url); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); //for debug only! curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); $resp = curl_exec($curl); curl_close($curl); print($resp);
  • 10 Votes
    28 Posts
    2k Views

    @marusaky Good post. The real issue with Flarum is that even the most minor of changes requires a extension, which is crazy. With NodeBB, you can make changes on the fly very easily, and without too much effort.

    There is an element of learning when it comes to making changes to any platform, but Javascript is not difficult at all once you get used to it, and there’s also extensive support for jQuery (and hundreds of code snippets on the internet you can easily adapt and tailor to your own needs)

    For years, phpBB used to reign supreme - now it’s incredibly dated, and always did have the most confusing admin panel I’ve ever seen.

  • nodeJS is the best

    Solved Performance
    9
    5 Votes
    9 Posts
    567 Views

    no no no

    @DownPW said in nodeJS is the best:

    hmmm I’ve already had this on my forum !!!

  • 15 Votes
    26 Posts
    1k Views

    @JAC ALWAYS shop around. Bitdefender, despite being a great product, have a habit of charging more for a renewal than they do a new subscription!