TL;DR
基本的にはevent >= worker > preforkの順で優れていると考えてオッケー。
スレッドセーフじゃないものに関してはpreforkを使った方が良いが、それ以外はeventで問題ない。
prefork
1プロセスが1リクエストを捌く方式。
メモリあたりの捌けるリクエスト数は少ないが、スレッドセーフでないプログラムを動かす場合はこの方式を使う必要がある。
worker
preforkの改良版。
1スレッドが1リクエストを捌く方式。
メモリ効率がpreforkよりも良くなっているが、同一プロセス内のスレッド間ではメモリ領域が共有されているので、スレッドセーフではないプログラムには適さない。
event
workerの改良版。RHEL8以降のデフォルト。
keepaliveが有効になっている場合に、workerよりも効率的にリクエストを捌くことができる。ただしそれができるのはhttpの時のみ。
参考文献
https://qiita.com/esparrago_b/items/4f368599aba1a059dbd1
https://l-light-note.hatenablog.com/entry/2013/12/01/184352