Surconsommation de CPU et fakesmtp inutilisable #7

Open
opened 2024-12-06 15:09:16 +01:00 by lgourvenec · 2 comments
Owner

Vu sur la PP MSE3. Fakesmtp n'est plus accessible, sa conso mémoire 92% de sa limite (64Mi) et sa conso CPU tourne autour de 100% de sa limite (50m)

Dans les logs, une erreur :

2024/12/06 14:36:17 "GET http://messervices-pp.lescrous.fr/emails/411 HTTP/1.1" from 10.2.203.35:36826 - 200 7731B in 50.498745ms
2024/12/06 14:36:18 "GET http://messervices-pp.lescrous.fr/emails/411/html HTTP/1.1" from 10.2.203.35:36826 - 200 2845B in 102.391618ms

 panic: could not render '/' page: write tcp 10.2.42.201:8080->10.2.184.102:43726: write: broken pipe
 
 -> forge.cadoles.com/wpetit/fake-smtp/internal/route.serveInboxPage
 ->   /src/internal/route/inbox.go:45

    net/http.HandlerFunc.ServeHTTP
      /usr/local/go/src/net/http/server.go:2136
    github.com/go-chi/chi/v5.(*ChainHandler).ServeHTTP
      /go/pkg/mod/github.com/go-chi/chi/v5@v5.0.12/chain.go:31
    github.com/go-chi/chi/v5.(*Mux).routeHTTP
      /go/pkg/mod/github.com/go-chi/chi/v5@v5.0.12/mux.go:459
    net/http.HandlerFunc.ServeHTTP
      /usr/local/go/src/net/http/server.go:2136
2024/12/06 14:36:19 "GET http://messervices-pp.lescrous.fr/ HTTP/1.1" from 10.2.184.102:43726 - 200 42521B in 5.767380855s
    main.main.ServiceContainer.WithValue.func3.1
      /go/pkg/mod/github.com/go-chi/chi@v4.1.1+incompatible/middleware/value.go:13
    net/http.HandlerFunc.ServeHTTP
      /usr/local/go/src/net/http/server.go:2136
    github.com/go-chi/chi/v5/middleware.Recoverer.func1
      /go/pkg/mod/github.com/go-chi/chi/v5@v5.0.12/middleware/recoverer.go:45
    net/http.HandlerFunc.ServeHTTP
      /usr/local/go/src/net/http/server.go:2136
    github.com/go-chi/chi/v5/middleware.init.0.RequestLogger.func1.1
      /go/pkg/mod/github.com/go-chi/chi/v5@v5.0.12/middleware/logger.go:55
    net/http.HandlerFunc.ServeHTTP
      /usr/local/go/src/net/http/server.go:2136
    github.com/go-chi/chi/v5.(*Mux).ServeHTTP
      /go/pkg/mod/github.com/go-chi/chi/v5@v5.0.12/mux.go:90
    net/http.serverHandler.ServeHTTP
      /usr/local/go/src/net/http/server.go:2938
    net/http.(*conn).serve
      /usr/local/go/src/net/http/server.go:2009
    created by net/http.(*Server).Serve in goroutine 1
      /usr/local/go/src/net/http/server.go:3086
    
2024/12/06 14:36:20 "DELETE http://messervices-pp.lescrous.fr/emails/411 HTTP/1.1" from 10.2.203.35:36826 - 204 0B in 2.448241ms

La BDD fait 24.5Mo.
On dirait que le programme est bloqué dans une boucle infinie.

Vu sur la PP MSE3. Fakesmtp n'est plus accessible, sa conso mémoire 92% de sa limite (64Mi) et sa conso CPU tourne autour de 100% de sa limite (50m) Dans les logs, une erreur : ``` 2024/12/06 14:36:17 "GET http://messervices-pp.lescrous.fr/emails/411 HTTP/1.1" from 10.2.203.35:36826 - 200 7731B in 50.498745ms 2024/12/06 14:36:18 "GET http://messervices-pp.lescrous.fr/emails/411/html HTTP/1.1" from 10.2.203.35:36826 - 200 2845B in 102.391618ms panic: could not render '/' page: write tcp 10.2.42.201:8080->10.2.184.102:43726: write: broken pipe -> forge.cadoles.com/wpetit/fake-smtp/internal/route.serveInboxPage -> /src/internal/route/inbox.go:45 net/http.HandlerFunc.ServeHTTP /usr/local/go/src/net/http/server.go:2136 github.com/go-chi/chi/v5.(*ChainHandler).ServeHTTP /go/pkg/mod/github.com/go-chi/chi/v5@v5.0.12/chain.go:31 github.com/go-chi/chi/v5.(*Mux).routeHTTP /go/pkg/mod/github.com/go-chi/chi/v5@v5.0.12/mux.go:459 net/http.HandlerFunc.ServeHTTP /usr/local/go/src/net/http/server.go:2136 2024/12/06 14:36:19 "GET http://messervices-pp.lescrous.fr/ HTTP/1.1" from 10.2.184.102:43726 - 200 42521B in 5.767380855s main.main.ServiceContainer.WithValue.func3.1 /go/pkg/mod/github.com/go-chi/chi@v4.1.1+incompatible/middleware/value.go:13 net/http.HandlerFunc.ServeHTTP /usr/local/go/src/net/http/server.go:2136 github.com/go-chi/chi/v5/middleware.Recoverer.func1 /go/pkg/mod/github.com/go-chi/chi/v5@v5.0.12/middleware/recoverer.go:45 net/http.HandlerFunc.ServeHTTP /usr/local/go/src/net/http/server.go:2136 github.com/go-chi/chi/v5/middleware.init.0.RequestLogger.func1.1 /go/pkg/mod/github.com/go-chi/chi/v5@v5.0.12/middleware/logger.go:55 net/http.HandlerFunc.ServeHTTP /usr/local/go/src/net/http/server.go:2136 github.com/go-chi/chi/v5.(*Mux).ServeHTTP /go/pkg/mod/github.com/go-chi/chi/v5@v5.0.12/mux.go:90 net/http.serverHandler.ServeHTTP /usr/local/go/src/net/http/server.go:2938 net/http.(*conn).serve /usr/local/go/src/net/http/server.go:2009 created by net/http.(*Server).Serve in goroutine 1 /usr/local/go/src/net/http/server.go:3086 2024/12/06 14:36:20 "DELETE http://messervices-pp.lescrous.fr/emails/411 HTTP/1.1" from 10.2.203.35:36826 - 204 0B in 2.448241ms ``` La BDD fait 24.5Mo. On dirait que le programme est bloqué dans une boucle infinie.
lgourvenec changed title from Surconsommation de CPU rendant fakesmtp inutilisable to Surconsommation de CPU et fakesmtp inutilisable 2024-12-06 15:10:50 +01:00
Owner

Fakesmtp garde tout les mails en mémoire. Redémarrer le conteneur devrait le nettoyer.
64Mo de mail implique qu'il y a dû y avoir une très forte utilisation du service, ce qui n'est pas un cas d'usage prévu par fake-smtp. Préférer un smtp sink pour ce genre de cas (pour le mse un component de ce type existe déjà).
Dans le cas d'une utilisation sur une très longue période, prévoir des redémarrages périodiques pour nettoyer la BDD.

Fakesmtp garde tout les mails en mémoire. Redémarrer le conteneur devrait le nettoyer. 64Mo de mail implique qu'il y a dû y avoir une très forte utilisation du service, ce qui n'est pas un cas d'usage prévu par fake-smtp. Préférer un smtp sink pour ce genre de cas (pour le mse un component de ce type existe déjà). Dans le cas d'une utilisation sur une très longue période, prévoir des redémarrages périodiques pour nettoyer la BDD.
Author
Owner

Et implémenter un nettoyage périodique pour supprimer les mails de plus de X jours (configurable), est-ce que c'est envisageable ?

Et implémenter un nettoyage périodique pour supprimer les mails de plus de X jours (configurable), est-ce que c'est envisageable ?
Sign in to join this conversation.
No Label
No Milestone
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Cadoles/fake-smtp#7
No description provided.