ChatLike.pro – Messaging Server Performance Ratings

Welcome to ChatLike.pro, a platform designed to provide critical insights into the scalability and performance of messaging servers. Making an informed choice about your messaging server is crucial when designing reliable and scalable systems that meet modern communication needs.

Why Estimate Maximum Load?

The messaging server is the backbone of real-time communication systems. When selecting a server, it is vital to understand its capacity—the maximum number of users it can handle simultaneously while maintaining acceptable performance.

Results
Disclaimer

The results presented here are based on our tests and should not be considered definitive. The performance of a server may vary depending on the environment and specific use cases. We recommend running tests on your own setup with your expected load to determine which server is best suited to your needs.

How We Test
  • We use a custom system where Distributed Agents are orchestrated from a central control center to simulate users connecting to the tested server.
  • Simulated User Connections: Servers are stress-tested by incrementally increasing the number of simultaneous connections.
  • Threshold Monitoring: We monitor error rates, message delivery times, and connection times to identify when thresholds are breached.
  • Fair Comparisons: All servers are tested in identical environments to ensure results reflect inherent server capabilities rather than hardware advantages.
Tested Server Hardware Configurations

The server runs on a cloud-based virtual machine, with the database hosted on the same instance. The operating system is either Ubuntu 22.04 or 24.04.

  • Configuration 1: 1 vCPU of an Intel(R) Xeon(R) E-2288G CPU at 3.70GHz and 4GB RAM.
  • Configuration 2: 2 vCPU of an Intel(R) Xeon(R) Platinum 8275CL CPU at 3.00GHz and 4GB RAM.
  • Simulated User Behavior

    Our tests simulate a chat application with the following usage profile:

    • Average user session duration (from connection to disconnection): 15 minutes.
    • Number of contacts (contact list size) per user: 20.
    • Each user participates in 5 to 25 group chats.
    • Every 3 minutes, a user sends a message to one of their contacts.
    • Every 1 minute, a user sends a message to one of their joined group chats.
    • Group chats range in size from 5 to 300 users.
    Health Thresholds
    • Max connection time: 15 seconds (90th percentile).
    • Max message delivery time: 1 minute (90th percentile).
    • Max error rate: 3 errors per user per hour. Timeouts of 1 minute during login or other operations are considered errors.
    Server Configurations Under Test
    ServerVersionComments
    Ejabberd24.7.0Using Mnesia DB
    Conduit0.9.0-1Using Nginx as a reverse proxy and RocksDB as a database
    Openfire4.9.2Using PostgreSQL database
    Prosody0.12.4Using PostgreSQL database
    MongooseIM6.1.0Using PostgreSQL database
    Synapse1.120.2+jammy1Using PostgreSQL database
    Server Highlights

    Ejabberd: A robust, scalable XMPP server written in Erlang, designed for high concurrency and fault tolerance, making it ideal for large-scale deployments.

    Prosody: A lightweight, modular XMPP server written in Lua, known for its simplicity and ease of customization, suitable for small to medium-sized projects.

    Openfire: A Java-based XMPP server featuring an easy-to-use web interface and extensive plugin support, balancing performance and usability.

    MongooseIM: An industrial-strength XMPP server written in Erlang, optimized for real-time messaging with a focus on high scalability and performance.

    Synapse: A Python-based Matrix server implementation with rich feature support, designed for interoperability and decentralized communication.

    Conduit: A lightweight Matrix server written in Rust, prioritizing performance and efficiency for smaller deployments or embedded systems.

    Get in Touch

    If you have any questions or suggestions, please contact us at [email protected]