10 만 개의 문자열 을 더 하면 무슨 일이 일어 날 까요?

최근 에 회사 플랫폼 의 한 BUG 를 검사 하고 있 는데 BUG 의 구체 적 인 증상 은 플랫폼 사용자 가 첨부 파일 을 올 렸 는데 제출 할 때 30 - 50 분 을 기 다 려 야 하고 전달 되 지 않 을 때 도 있다 는 것 이다.
버그 해결:
      1. 저 는 먼저 플랫폼 의 로 그 를 검 사 했 는데 관련 업무 에 이상 이 없 음 을 발 견 했 고 전체 WEB 서버 의 로 그 를 검 사 했 는데 'TNS: connection close' 가 많은 것 을 발 견 했 습 니 다.그 다음 에 저 는 플랫폼 의 링크 풀 이 다 소모 되 었 기 때문에 링크 풀 을 다시 설정 하고 시간 초과 링크 를 정기 적 으로 회수 합 니 다.
       2. 코드 가 출시 된 후에 도 사용 자 는 이 문제 가 존재 한다 고 반응 하지만 지금 은 제출 할 수 있 고 제출 하지 못 하 는 일이 없 을 것 입 니 다.하지만 아직 은 느 려 속도 가 올 라 가지 않 았 다.또한 운영 동 료 는 사용자 가 제출 하면 시스템 의 CPU 부하 가 무 서운 수량 급 에 이 를 것 이다.그래서 나 는 이 업무 모듈 의 모든 코드 를 꺼 내 하나씩 분석 하고 추적 했다.결 과 는 정말 문제 가 발견 되 었 습 니 다. 현지에서 도 10 만 줄 정도 의 서 류 를 제출 하 는 것 이 느 립 니 다.
천천히 코드 세그먼트 가 내 앞 에 나 타 났 다. 구체 적 으로 다음 과 같다.
while((fileLine = in.readLine()) != null) {
                line_num++;
                if(CTools.checkMobileValid(fileLine)!=0) {
                  text_error = "error";
                  send_hash.put(String.valueOf(hash_num), line_num + "_" + "          !");
                  hash_num++;
                }
                else {
                 mobilenumber += fileLine + ",";
                }
              }

 String[] mobilenumber_arry = mobilenumber .split(",");


 
mobilenumber += fileLine + ",";  String[] mobilenumber_arry = mobilenumber .split(",");
 
 코드 에 있 는 빨간색 글꼴 부분 을 주의 하 십시오. 그리고 이 순환 은 약 10 만 줄 입 니 다.
위의 코드 를 보고 나 는 매우 답답 했다..........................................................................
http://blog.csdn.net/chuan122345/archive/2007/08/12/1739806.aspx
 
이 예 를 통 해 우 리 는 문자열 링크 를 배 울 수 있 습 니 다. 가끔 은 정말 다운 될 때 가 있 습 니 다.만약 20 만 줄 의 파일 을 전송 한다 면 나 는 서버 를 직접 끊 을 것 이 라 고 의심 하지 않 을 것 이다.(물론 이것 도 서버 의 연 산 력 에 달 려 있다...)

좋은 웹페이지 즐겨찾기