Criação de perfil na produção para encontrar gargalos de servidor

Atuo como lĂ­der tĂ©cnico na equipe do Sistema, que Ă© responsável pelo desempenho e estabilidade do serviço. De março a novembro de 2020, o Miro cresceu sete vezes - atĂ© mais de 600 mil usuários Ăşnicos por dia. Agora nosso monolith Ă© executado em 350 servidores, usamos cerca de 150 instâncias para armazenar dados do usuário. 





Quanto mais os usuários interagem com o serviço, mais atenção será necessária para localizar e eliminar gargalos nos servidores. Deixe-me contar como resolvemos esse problema.





Parte um: declaração do problema e introdução

No meu entendimento, qualquer aplicativo pode ser representado como um modelo: consiste em tarefas e manipuladores. As tarefas sĂŁo enfileiradas e executadas sequencialmente, como na figura abaixo:





Nem todos concordam com esta declaração do problema: alguĂ©m dirá que nĂŁo há filas em servidores RESTful - apenas manipuladores, mĂ©todos de processamento de solicitação. 





Eu vejo de outra forma: nem todos os pedidos são processados ​​simultaneamente, alguns aguardam sua vez na memória do web engine, em sockets ou em outro lugar. De qualquer maneira, há uma fila.





Miro WebSocket , . , , . , .





, — . 





, . , , .





: . , — , — . : . : , . , — . 





: . , . , . , . 





, , , . , , . 





. : (1%) , (99%). 





: . , (user’s action).  





: 2% , , — , . UX — , . .





:

. . 





, , , : - input/output (IO). 





, . — . , , SQL- .





(data access layer, DAL) , . , (observable). 





: Miro jOOQ SQL. : SQL-, . Redis , . DAL . , , . . 





RESTful , - .





, .





. , , SQL Redis. time-counters: , , Redis . 





Prometheus Jaeger. ? , — . . 





: Miro, . , , — . Prometheus , . 





— , . Jaeger . — .





Stack trace

, , , . — .





data access layers stack trace. , end point Redis.





stack trace , . — , , . 





Miro stack traces Grafana, dump third-party . : projects.pt.server.RepositoryImpl.findUser (RepositoryImpl.java:171) RepositoryImpl.findUser:171.





WatchDog

stack trace — , . , , .





— WatchDog. , . , .





— 100 5 . WatchDog thread, stack trace. 





: 5 , stack trace. , alert, — , - deadlock .





2020 , , Miro 20% . , . 





, — , . . — , . .












All Articles