|
@@ -0,0 +1,29 @@
|
|
|
+[[performance]]
|
|
|
+== Performance
|
|
|
+
|
|
|
+This chapter describes the performance characteristics
|
|
|
+of Cowboy and offers suggestions to get the most
|
|
|
+performance out of your application.
|
|
|
+
|
|
|
+=== One process per connection
|
|
|
+
|
|
|
+The first version of Cowboy featured a single process
|
|
|
+per connection, whereas the current version of Cowboy
|
|
|
+features one process per connection plus one process
|
|
|
+per request. This has a negative impact on performance,
|
|
|
+but is necessary in order to provide a common interface
|
|
|
+for both HTTP/1.1 and HTTP/2 (as well as future HTTP
|
|
|
+versions).
|
|
|
+
|
|
|
+It is still possible to use a single process per
|
|
|
+connection, and avoid the creation of additional
|
|
|
+processes for each request, by implementing a
|
|
|
+stream handler to process the requests. This can
|
|
|
+be done for all requests, or just for a single
|
|
|
+endpoint depending on the application's needs.
|
|
|
+
|
|
|
+Stream handlers provide an asynchronous interface
|
|
|
+and must not block, so the implementation will
|
|
|
+be very different from normal Cowboy handlers,
|
|
|
+but the performance gains are important enough
|
|
|
+to justify it in some cases.
|