Spring Boot:인터페이스 압력 측정 및 간단 한 최적화 전략

공 사 를 다 한 후에 인터페이스 에 대해 압력 테스트 를 해 야 한다.다 중 사용자 접근 테스트 를 직접 작성 할 수도 있 고 jmeter 를 사용 하여 압력 측정 을 할 수도 있 습 니 다.jmeter 의 장점 은 테스트 가 편리 하고 완벽 한 결과 분석 기능 이 있다 는 것 이다.이번 에는 jmeter 를 이용 하여 압력 테스트 를 진행한다.
1.데 이 터 를 준비 하고 테스트 를 위해 200 w 조 이상 의 데 이 터 를 준비 합 니 다.간단 한 방법 은 아래 sql 을 사용 하여 빠르게 만 드 는 것 입 니 다.
INSERT INTO table (user_name,address)
SELECT user_name, address FROM table;
그러나 이렇게 만 든 데 이 터 는 기록 에 따라 중복 부분 이 너무 많아 실제 업무 와 맞지 않 습 니 다.일반 업무 에 서 는 메 인 키 를 제외 하고 하나의 필드 가 유일 하 다.예 를 들 어 핸드폰 번호,사용자 이름 등 이다.이번 username 을 유일 하 게 설정 하고 UUID 방식 으로 간단하게 생 성 합 니 다.

@RequestMapping("/create")
public Integer createData(Integer password) {
if (password != 1024) {
return 0;
}
ThreadPoolExecutor poolExecutor = new ThreadPoolExecutor(10,
20, 1, TimeUnit.MINUTES,
new ArrayBlockingQueue<Runnable>(100000),
Executors.defaultThreadFactory(), new ThreadPoolExecutor.CallerRunsPolicy());
int max = 1000000;
for (int i = 0; i < max; i++) {
poolExecutor.execute(() -> {
Date now = new Date();
User user = new User();
user.setStatus(0);
user.setUserName(UUID.randomUUID().toString().replace("-", ""));
user.setAddress("");
user.setCreateTime(now);
user.setUpdateTime(now);
userService.saveUser(user);
});
}
return 1;
}

스 레 드 탱크 기술 로 데 이 터 를 생 성 하 다.일부 매개 변 수 는 자신의 설정 을 참고 하여 설정 합 니 다.핵심 스 레 드 수 10,최대 스 레 드 수 20,대기 열 용량 10w 를 차단 하고 정책 CallerRunsPolicy 의 매개 변 수 를 생 성 하지 않 습 니 다.
데이터 생 성 후 생 성 수량 을 확인 하면 모든 user 를 볼 수 있 습 니 다.이름 이 다 달라.
select count(*),count(distinct user_name) from user

2.인터페이스 개조.테스트 편 의 를 위해 공공 mapper 를 사용 합 니 다.도입 의존

<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
</dependency>
시작 클래스 MapperScan 주 해 를 import tk.my batis.spring.annotation.MapperScan 으로 수정 합 니 다.
mapper 인 터 페 이 스 는 extends Mapper 를 계승 합 니 다.(import tk.my batis.mapper.comon.Mapper;)이렇게 하면 mapper 에 insert,select 등 기본 적 인 방법 을 생 성 할 수 있 습 니 다.
3.테스트.
테스트 인터페이스

@RequestMapping(value = "/hello", method = {RequestMethod.POST})
public List<User> getUser(User user) {
return userService.getUserByUser(user);
}
jmeter 를 열 고 Option 을 통 해 중국어 언어 를 선택 하 십시오.테스트 계획 을 만 들 고 이번 에는 인터페이스 에 만 압력 테스트 를 합 니 다.
테스트 매개 변 수 는 userName 을 선택 하고 무 작위 로 생 성 된 UUID 를 사용 합 니 다.그러면 최종 적 으로 DB 에 접근 할 때 캐 시 를 실행 하지 않 을 수 있 습 니 다.
1.파일-새 테스트 계획
2.편집-추가-스 레 드-스 레 드 그룹
3.스 레 드 그룹 선택,편집-추가-논리 컨트롤 러-트 랜 잭 션 컨트롤 러
4.트 랜 잭 션 컨트롤 러 를 선택 하고 편집-추가-샘플 러-bean Shell 샘플 러
5.트 랜 잭 션 컨트롤 러 를 선택 하고 편집-HTTP 요청 추가
6.BeanShell 샘플 러 를 선택 하고 아래 코드 를 스 크 립 트 상자 에 복사 합 니 다.내용 은 user 를 설정 하 는 것 입 니 다.name 변 수 는 UUID 입 니 다.

import java.util.UUID;
UUID uuid1 = UUID.randomUUID();
vars.put("user_name",(uuid1.toString()).toUpperCase().replaceAll("-","")); 

7.HTTP 요청 을 선택 하고 다음 과 같이 설정 합 니 다.매개 변수 부분 은 다음 과 같 습 니 다.
명칭.
값.
userName
${user_Name}
이렇게 하면 절차 6 에서 생 성 된 매개 변 수 를 HTTP POST 가 요청 한 매개 변수 로 전달 할 수 있다.

결과 트 리 추가,집계 보고서 등 최종 구조:

8.스 레 드 그룹 을 선택 하고 스 레 드 수 등 정 보 를 설정 합 니 다.자세 한 내용 은 홈 페이지 를 참조 하 십시오https://jmeter.apache.org/usermanual/index.html

여기 서 먼저 스 레 드 수 를 2000 으로 설정 합 니 다.압력 테스트 를 해 야 하기 때문에 Ramp-up 을 1 초 로 설정 합 니 다.즉,1 초 안에 모든 스 레 드 를 시작 합 니 다.
9.스 레 드 그룹 을 시작 합 니 다.여기에 그림 설명 을 삽입 합 니 다.
10.결과 트 리 에서 매번 요청 한 인 자 를 확인 할 수 있 습 니 다.

종합 보고서 에서 전체 정 보 를 볼 수 있다.

상기 절 차 를 통 해 시스템 각 인터페이스의 스루풋 등 정 보 를 초보 적 으로 예측 할 수 있다.첫 번 째 압력 측정 중 username 자동 으로 색인 을 설정 하지 않 았 습 니 다.몇 가지 방법 으로 시스템 성능 을 향상 시 킬 수 있 습 니 다.
1.username 색인 설정.
2.redis 캐 시 를 사용 합 니 다.하 나 는 캐 시 최근 검색 데이터 이 고,다른 하 나 는 표 에 있 는 모든 user 입 니 다.name 캐 시(Set)에 저장 합 니 다.요청 할 때 캐 시 에 존재 하 는 지 확인 하고 존재 할 때 만 DB 를 검색 합 니 다.
3.데이터 양 이 너무 많 으 면 부 릉 필터 로 user 저장 가능name。
4.흐름 제한,여 기 는 API 차원 의'guava 가방 아래 RateLimiterJ'라 고 만 말 합 니 다.셀 프 절단면+Redis;Spring Cloud GateWay。
공사 주소:https://github.com/showsys20/spring-demo-cm.git
이상 의 이 평론 Spring Boot:인터페이스 압력 측정 및 간략 한 최적화 전략 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 에 게 참고 할 수 있 고 여러분 들 이 우 리 를 많이 지지 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기