AstonJ

AstonJ

Which webserver do you use?

We had a thread here recently that mentioned webservers in PHP, and it got me curious about the options in the BEAM world and what everyone is using. Which webservers do you use or plan to use in your apps? :003:

You can select as many options as you like:

Which webserver/s do you use or plan to use? (Select as many as you like)
  • Ace
  • Bandit
  • Chatterbox
  • Cowboy
  • Elli
  • Erlang’s built in inets/httpd
  • Mist
  • Mochiweb
  • Yaws
  • Other - please say in thread!
0 voters

Ace (Elixir)

HTTP web server and client, supports http1 and http2.

https://github.com/CrowdHailer/Ace

Bandit (Elixir)

Bandit is an HTTP server for Plug and Sock apps.

https://github.com/mtrudel/bandit

Chatterbox (Erlang)

HTTP/2 Server for Erlang.

https://github.com/joedevivo/chatterbox

Cowboy (Erlang)

Small, fast, modern HTTP server for Erlang/OTP.

https://github.com/ninenines/cowboy

Elli (Erlang)

Simple, robust and performant Erlang web server.

https://github.com/elli-lib/elli

Erlang’s built in inets/httpd

The HTTP server, also referred to as httpd, handles HTTP requests as described in RFC 2616 with a few exceptions, such as gateway and proxy functionality. The server supports IPv6 as long as the underlying mechanisms also do so.

Mist (Gleam)

A (hopefully) nice, pure Gleam web server.

https://github.com/rawhat/mist

MochiWeb (Erlang)

MochiWeb is an Erlang library for building lightweight HTTP servers.

https://github.com/mochi/mochiweb

Yaws (Erlang)

Yaws webserver

https://github.com/erlyaws/yaws

Most Liked

lpil

lpil

Creator of Gleam

Great idea, I’d love to see some benchmarks of all of them.

We have some slightly out-of-date ones for some of the above here.


Mist came out fastest of the BEAM servers, and could sometimes beat Go depending on request body size.

One thing that really surprised me was how badly Cowboy handled request bodies. JavaScript was beating it as soon as there was a reasonable amount of data to read!

10
Post #3
tristan

tristan

Rebar3 Core Team

I’d expect to see similar numbers in a benchmark for Bandit and Elli since they both use Erlang’s http parser – which also means Bandit will have the same scaling issue Cowboy hit years ago that resulted in cowlib being created.

But for many many use cases Elli (or Bandit I suppose) work great :slight_smile:

mtrudel

mtrudel

Creator of Bandit

Bandit author here. Late to the party, but a couple of things:

  1. I’ve looked for historical evidence of decode_packet’s supposed scalability issues but I can’t seem to find anything. Can you point me at some references?

  2. Performance numbers in (synthetic) benchmarks suggest quite the opposite regarding the scalability of cowlib vs. decode_packet. When I was building out GitHub - mtrudel/network_benchmark · GitHub I had to give up on higher concurrency tests as I was unable to get Cowboy to complete them without massive error counts, whereas Bandit hummed along just fine (and indeed grew the performance gap even more on higher concurrency tests).

m.

Where Next?

Popular in Polls Top

AstonJ
Posting this to see if we can make things easier for people to get into Neovim. If you use Neovim and have a favourite distro please let ...
New
axelson
I’m working on VSCode ElixirLs syntax highlighting, and different themes support different syntax definitions. So I am curious about whic...
New
Nezteb
poll The poll allows up to 2 votes for cases where people have a preferred tool for Elixir and a separate preferred tool for Erlang or th...
New
AstonJ
Polls are a great way to easily get a snapshot of things, and we’ve had some really interesting polls over the years! Here are some tips...
New
jaimeiniesta
Alchemists everywhere! Join our poll to see what countries have the most Elixir developers! (Please note if you voted in the original po...
New
ryanswapp
I think it would be interesting to see how most people are using Phoenix in production. Do you use it as an API backend for a SPA? Or do ...
New
akoutmos
I was wondering how people are handling run-time configuration of their Plugs in their Phoenix applications as of today: poll I am also ...
New
AstonJ
poll asdf Extendable version manager with support for Ruby, Node.js, Elixir, Erlang & more Manage multiple runtime versions with a ...
New
AstonJ
Curious how much people are paying for hosting of their Elixir (or other BEAM lang) apps :smiley: The poll is anonymous so if you can ge...
New
AstonJ
A terminal multiplexer is a software application that can be used to multiplex several separate pseudoterminal-based login sessions insid...
New

Other popular topics Top

aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
freewebwithme
Using vs code and installed ElixirLS: support and debugger. And I got an error popped up on start up says Failed to run ‘elixir’ comma...
New
aesmail
Hello guys, I have finally made it. I created an admin interface for a framework. It’s been on my todo list for years and with the curre...
New
Qqwy
Original source of discussion: This topic on the Pragmatic Programmers’ Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
boundedvariable
I am going through the kafka architecture. All the features what the kafka is providing are already in Erlang. I would like hear your opi...
New
Brian
What is the proper way to load a module from a file in to IEX? In the python world, doing something like this pretty standard: from ....
New
joaquinalcerro
Hi there, I am working with Ecto-Postgresql and I need to call all of the records from a specific table but the table has 40,000 records...
New
vonH
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New

We're in Beta

About us Mission Statement