noob
661
2020-10-30 12:10:12 작성 2020-10-30 12:42:54 수정됨
6
280

cors 때문에 통신 속도가 느려질수 있나요??


안녕하세요

ajax 통신을 해서 DB에서 데이터를 불러오는데 리턴해오는 속도가 너무 느려서 해결방법을 찾고있습니다.

데이터 양이 많은것도 true/false 를 리턴해도 1초가 넘게 걸립니다.


테스트 서버에서는 속도가 빠르게 나오는데 실제 운영중인 서버에서는 속도가 너무 느리게 나옵니다.

페이지 로딩 속도는 빠른데 ajax 통신을 할때 응답이 오기까지 1초가 넘게 걸립니다.

ajax는 동기방식으로 통신을 하고 ajax 결과가 떨어지면 그 결과값으로 또 동기방식으로 ajax 통신을 합니다.

그러다보니 웹페이지가 거의 2~4초정도 멈춰있는 상태가 됩니다.(테스트 서버에서는 아무리 길어도 0.5초가 넘지 않습니다)


크롬 개발자도구에서 네트워크탭에서 확인해보니  "Request Headers" 부분에서 차이가 납니다.

실제 운영서버에서는 cors 라고 표시가 되어있는데 테스트서버에는 표시가 나타나지 않습니다.


[실제 운영서버]


[테스트서버]


테스트서버는 웹서버와 DB서버가 같은 곳에 있고,

실제 운영중인 서버는 웹서버와 DB서버가 따로 있습니다.


웹서버와 DB서버의 IP가 다른점과 저 cors 때문에 통신속도가 느린 원인일까요??

1
  • 답변 6

  • 캐티
    310
    2020-10-30 12:14:53

    CORS 때문에 느려지는 매커니즘은 존재하지 않스빈다.
    Connection Keep-Alive 문제거나 포트소모 문제이빈다.

    아무래도 표준이 아닌 동기방식 때문에 브라우저 자체에서 걸리는 문제가 아닌가 의심이 되빈다.

  • noob
    661
    2020-10-30 12:40:28

    캐티 // 혹시 Connection Keep-Alive 이게 문제인지 확인하는 방법이 있나요??

    제가 네트워크쪽은 잘 몰라서 확인하는 방법을 모르겠습니다...

    Request Headers 에는 Connection: Keep-Alive 라고 표시가 되어 있습니다

  • 얻으민
    1k
    2020-10-30 12:41:59

    실서버에선 해당 ajax로 가져오는 데이터 양이 많거나 해서 api response 타임이 오래걸리는 이슈일 것 같네요.

  • noob
    661
    2020-10-30 12:47:18

    얻으민 // 아마 데이터양 많은건 아닌거 같습니다. ajax 호출 전 console.log 로 시간 찍고 ajax 통신 완료후 다시 console.log로 시간을 찍어서 확인해보니 1초정도 걸렸습니다. 

  • noob
    661
    2020-10-30 19:29:15

    어디서 속도 저하가 발생하는지 확인하는 방법이 있나요 ㅠㅜ?

    어떤 이유때문에 느린지 알수가 없어서 해결도 못하고 있습니다 ㅠㅠ

  • 빨간오이
    139
    2020-10-30 19:49:45

    도움이 될지 몰라도... 제가 측정했었던 방법을 말씀드리면, 저는 측정용 로거를 만들어서 백엔드 요소요소에 심었습니다.

    측정용 로거는 그냥 List<String> 이구요. 이걸 보관하는 Spring Bean 을 만들고, 저 값은 쓰레드로컬로 보관합니다.

    요청 시작 지점에서 비어있는 리스트를 만들어 보관하고, 측정이 필요한 곳(service bean 이나 dao 나 아무곳)에서 적절한 로그를 append 합니다.

     ( 지점 이름 같은 것과 경과시간 넣으면 되겠죠. )

    마지막 리턴할 때 이 스트링리스트를 응답 json에 포함시킵니다.

    브라우저 개발자 도구를 통해 response 값을 보면 찍힌로그를 볼 수 있죠.


  • 로그인을 하시면 답변 을 등록할 수 있습니다.