테스트 사이트 - 개발 중인 베타 버전입니다

api 응답시간

rlawhd 2년 전 조회 2,560

업체에서 주기적으로 api를 쏴주고있어

 

이걸 받아서 제 디비에 넣고있는데

 

api받고 응답을 10초이내에 안하면 다시 보내줘서 디비가 중복으로 들어가고있습니다.

 

응답은 api받는 페이지 맨위에

</strong></p>

<p>http_response_code(200);</p>

<p><strong>

이거 넣어줬고 매번 중복은 아니고 중간중간 이런현상이 발생하는데

 

이유가뭘까요?

keep-alive 도 문제인가해서 off로 했고, 또 다른 이유가있을까요?

10초까지 걸릴만한게 뭐가있을까요?

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

Table lock을 사용해 보세요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

엑스엠엘
2년 전
임시 테이블을 만들어서 insert 후에 원테이블에 옮기는 방법도 있습니다.
엑스엠엘
2년 전
그리고 중복여부 확인을 위해서..
api사용자 쪽에 고유 번호를 요청해 보세요.

댓글을 작성하려면 로그인이 필요합니다.

2년 전

DB 중복처리는 등록할 값들의 유일성을 만들수 있는 경우

primary key 나 unique key 로 제약조건을 추가하면 방지할수 있고

 

처리시간 문제 같은 경우 자세하게 디버깅을 해봐야 알수 있으며

많은 요청이 한순간에 몰리는 경우는 백그라운드 큐 처리 형태로 어느정도 보완하는 방법이 있습니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

r
rlawhd
2년 전
실제로 2건이 오는경우도 있어서 유일성만들수는 없고,

어느쪽에서 시간이 지연되는걸까요?

a.php를 5천번 호출한다했을때

호출은 동시에 하는데, 10초안에 5천건에대한 response를 못하는게 문제일까요?
배르만
2년 전
10초안에 5천건에대한 response를 못하는건 문제점 같고
문제점이 발생하는 원인을 파악하기 위해서는 적지않은 디버깅과 테스트가 필요할수 있습니다.

가장 기본적인 시작은 프로그램 최적화 부터 시작해서 쿼리 최적화 정도까지를 확인하는 것입니다.
response 의 경과시간을 로그로부터 추출해서 예상하는 지연이 실제 발생하고 있는지
발생한다면 지연의 분포도를 average, max 정도로 확인 후
프로그램에 문제가 있는지 쿼리에 문제가 있는지를 수정하며 파악 해볼수 있습니다.

위 문제를 개선하고도 요구사항에 만족하지 못하는 경우
어플리케이션 및 플랫폼 하드닝, 하드웨어 스펙, 네트워크 관련 확인이 추가 필요할수 있습니다.

댓글을 작성하려면 로그인이 필요합니다.

2년 전

실행코드 내에 시간을 찍어서 로드가 오래 걸리는 구간을 줄여야 할텐데...

아무리 그래도 10초는 너무 짧은거 아닌가 싶어요 pg사도 30초 혹은 1분정도 기다려주는 걸로 알고있는데...

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

r
rlawhd
2년 전
단순히 찍어봤을때는 0.003초던데,, 천개씩 들어오면 로드걸려서 그런거겠죠?
개노미
2년 전
네.... 아마 그렇지 않을까 싶어요

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인