Zła brama 502 po małym teście obciążenia na serwerze fastcgi-mono poprzez nginx i ServiceStack
Usiłuję uruchomić API usługi sieciowej z ServiceStack pod nginx i fastcgi-mono-server.
Serwer uruchamia się dobrze, a interfejs API działa i działa. Widzę czasy odpowiedzi w przeglądarce za pomocą profilera ServiceStack i działają one w 10ms.
Ale jak tylko wykonam mały test obciążenia przy użyciu „oblężenia” (tylko 500 żądań przy użyciu 10 połączeń), zaczynam uzyskiwać 502 Bad Gateway. Aby odzyskać, muszę ponownie uruchomić fastcgi-mono-server.
Serwer nginx jest w porządku. Fastcgi-mono-server jest tym, który przestaje odpowiadać po tym małym obciążeniu.
Próbowałem użyć gniazd tcp i unix (zdaję sobie sprawę z problemu uprawnień z gniazdem unix, ale już to naprawiłem).
Oto moje konfiguracje:
server {
listen 80;
listen local-api.acme.com:80;
server_name local-api.acme.com;
location / {
root /Users/admin/dev/acme/Acme.Api/;
index index.html index.htm default.aspx Default.aspx;
fastcgi_index Default.aspx;
fastcgi_pass unix:/tmp/fastcgi.socket;
include /usr/local/etc/nginx/fastcgi_params;
}
}
Aby uruchomić fastcgi-mono-server:
sudo fastcgi-mono-server4 /applications=local-api.acme.com:/:/Users/admin/dev/acme/Acme.Api/ /socket=unix:/tmp/fastcgi.socket /multiplex=True /verbose=True /printlog=True
EDYCJA: Zapomniałem wspomnieć o ważnym szczególe: Używam tego na Mac OS X.
Przetestowałem również wszystkie możliwe konfiguracje serwera WWW dla aplikacji Mono: konsola, moduły apache mod_mono, nginx fast_cgi i proxy_pass. Wszyscy przedstawili ten sam problem awarii po kilku żądaniach w Mono 3.2.3 + Mac OS X.
Udało mi się przetestować tę samą konfigurację na komputerze z Linuksem i nie miałem tam żadnych problemów.
Wygląda więc na to, że jest to problem Mono / ASP.NET podczas pracy na Mac OS X.