이번에 업그레이드를 하게 되면서, 서버 속도가 많이 빨라졌습니다.
속도가 빨라지면서 발생되는 것으로 짐작되는 문제가 현재 2가지 있는데, 혹시 이런 경우를 겪으신 분이 있다면 조언을 부탁드리려 합니다.
1. 병렬 RFC를 통해 테이블에 INSERT를 해주는 프로그램이 있습니다.
동시에 돌아가는 프로세스를 20개로 주고 한번에 처리하는 데이터를 1000건으로 주고 RFC를 총 100번 호출한다고 하면
100번째의 RFC부르고 80번째 RFC에 대한 리턴을 받을때 까지는 이상이 없는데, 마지막에 81번째~100번째 리턴이 한번
에 들어오면서 문제가 발생하는것 같습니다. 발생하는 에러는 SAPSQL_ARRAY_INSERT_DUPREC(데이터 중복)인데,
실제로 데이터가 중복되는거 같지는 않습니다. 업그레이드 전 기존에는 이런 문제가 없었습니다.
2. 펌뱅킹(SAP서버 내부에 C언어 파일로 되어 있고, ABAP에서 이 C언어 컴파일된것을 RFC를 통해 호출해서 은행과 연결
해주는 VAN사에 은행 이체데이터등을 보내주는 프로그램이 있는데, 이것도 업그레이드 후 데이터가 일부 누락되는 문제
가 발생합니다. VAN사와 통화해보니 1초에 20건정도 까지는 데이터가 들어오면 처리가 되는데, 그 이상으로 들어올때는
문제가 생길수 있다고 합니다.
혹시 프로젝트를 하시다가 이와 같은 문제 발생하신분이 있으면 어떻게 해결하셨는지 조언 부탁드립니다. 감사합니다.
댓글 4
-
아빱초보
2010.09.15 17:37
-
감자
2010.09.15 19:24
통으로 insert하지 마시고 loop 문을 써서 하시면 해결이 될것 같기는한데요. 속도가 아무래도 느리겠죠.
실제로 중복데이터가 아니라면 BC에게 문의를 해서 DB 파라미터 조정등을 해야 할것 같네요.
-
파초선
2010.09.16 01:52
저도 그런경우를 겪어 보았는데요, Commit Work and wait 문으로 Commit 처리를 해보셔요~
수고하세욤.ㅋ
-
리브레
2010.09.17 01:44
^^ 여러분들 답변주셔서 감사합니다. 결산에서 계속 에러가 발생해서 이제야 글을 확인하게 되었네요. 첫번째 경우는 해결했는데, 예상을 벗어나 중복문제가 맞았습니다. 프로그램 내부로직중에 100000건 단위로 데이터 키값을 만들어주는게 있었는데 이게 100000건이 넘는 데이터가 들어오면서 키값이 중복이 되었네요. 공교롭게도 업그레이드 하고 첫결산을 돌릴때 문제가 발생해서 병렬처리 문제인줄 알고 한참을 헤맸습니다.
두번째 경우는 아직 해결중인데요. RFC부를때 현재 인터널테이블에 이체 데이터가 1000건이던 2000건이던 통째로 보내고 있는데요. 이것을 LOOP로 돌려서 WAIT 처리하는 방법말고는 다른 방법은 없을까요?. 온라인으로 돌리는 것이라 LOOP를 써서 돌린다면 데이터 양에 따라 시간이 많이 걸릴것 같아서 말이죠. UNIX상에 C언어 에서도 결국 1건씩 보내는것이 아니라 전체 데이터를 한번에 호출해서 전송하더라구요. 혹시 파초선님이 답변해 주신 COMMIT WORK AND WAIT로 처리 한다면 UNIX상에서도 문제없이 처리가 될까요?
답변 주신 여러분들 정말 감사드립니다.
이런 문제는 발생한적은 없지만 내용만을 읽어보았을때 둘다 시간과 관련이 있어 보입니다...즉 데이터 처리가 너무 빠르게 진행되어서 발생하는 문제 같아 보입니다...syntax 중에 WAIT 라는 syntax가 있습니다...도움이 될지는 모르겠으나 방법이 없다면 WAIT 구문을 이용하여 1초라도 delay 시키는 방법은 어떨런지요?