본문 바로가기

Backend4

[Springboot] nGrinder 부하테스트 성능 높이기 (feat. passwordEncoder) - nGrinder 부하테스트 중 간단한 login API를 테스트하는데 TPS가 정말 정말 낮게 나왔다. Vuser를 올려도 TPS는 30에서 멈추고 MTT만 증가하는 상황이었다. (200명 이상에선 테스트 중지까지..) 부하테스트에 대해 정확히 알지는 못하지만 TPS 30은 뭔가 문제가 있어 보였다. - nginx 웹서버 설정도 바꿔보고, Springboot WAS도 이것저것 손대보고, 페치 조인으로 쿼리 최적화도 적용했지만 결과는 다르지 않았다. - 구글링 (https://yunb2.tistory.com/8)을 통해 passwordEncoder에 문제가 있을 수 있다는 걸 접했다. - 확인해보니 passwordEncoder에 passwordFactories가 적용되어있었고 이를 BCryptPassw.. 2023. 5. 15.
[Springboot] 쿼리 최적화를 위한 fetch join 프로젝트 중 쿼리 최적화를 위해 fetch join을 수행했다. - 최초 FetchType EAGER로 작성된 /api/v1 코드 - 멤버 정보를 조회할 때 Member, Authority, Token 3개의 테이블에서 3번의 Select 쿼리를 날리는 걸 fetch join을 적용해 1번의 쿼리로 조회하려고 한다. // v2 fetch join @Query(value = "select m from Member m " + "join fetch m.token " + "join fetch m.roles " + "where m.email = :email") Optional findAllByEmail(@Param("email") String email); 상황에 따라 다르겠지만, 데이터 여러개를 조회할 때 좋은.. 2023. 5. 15.
[Swagger3] SpringBoot SpringDoc(OpenAPI) Authorization 버튼 활성화 하는 방법 Swagger3 Authorization 버튼 활성화 하는 방법 프로젝트 진행 중 Swagger3를 사용해 API 테스트, 문서화를 했다. 이 과정에서 회원 서비스 관련해 Authorization 타입을 지정해줘야하는 API를 Swagger에서 테스트하기 위해 방법을 찾던 중 Authorization을 활성화 할 수 있다는 정보를 받았다. 아래의 Config 설정을 통해 원하는 타입의 Authorization 버튼을 활성화 할 수 있다. SwaggerConfig 설정 @Configuration @EnableWebMvc public class SwaggerConfig { @Bean public OpenAPI openAPI() { Info info = new Info() .title("") .version(.. 2023. 5. 4.
[Redis] 배포환경에서의 Redis관련 Error 1. docker logs [spring backend 컨테이너] 2023-04-26 07:18:20.123 ERROR 1 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[.[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [/api/v1] threw exception [Request processing failed; nested exception is org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis; nested exception is io.lettuce.c.. 2023. 4. 26.