Flamme Dev
  • IntroduceMyself
  • GOAL
    • 2021년 목표
    • 회고록
      • 2020년
  • COMMON
    • 자료구조
      • 시간복잡도
      • 스택/큐
    • 코드리뷰/스터디/세미나
      • Semina
        • Version control -1 (SVN/GIT)
        • Version control - 2 (GIT)
        • PostMan
        • JMeter
      • 스터디
        • 2021년
          • EffectiveKotlin
          • 이펙티브자바
        • 2020년
          • JPA Study
            • Chap1
            • Chap3
            • Chap4
            • Chap5
            • Chap6
            • Chap7
            • Chap8
            • Chap9
            • Chap10 -1
            • Chap10-2
            • Chap10-3
            • Chap12
            • Chap 13. 웹 애플리케이션과 영속성 관리
            • Chap14
      • 코드리뷰
        • Page 1
        • 개발 생각
        • APNs 라이브러리 교체
        • 파일 삭제 분투기
        • 신입 코드리뷰
          • 2020-09-02
          • 2020-09-03
          • 2020-09-10
        • Repository
          • Repositroy(20201124)
          • Repositroy(20201123)
          • Repositroy(20201120)
          • Repositroy(20201119)
          • Repositroy(20201117)
    • 개발 서적 / 동영상 강의
      • 동영상 강의
        • 진행 중
        • 완주한 것
      • 개발 서적
        • 읽은 것
          • 손에 잡히는 10분 SQL
            • 인덱스
            • 정리 본
        • 진행 중
          • 폴리글랏 프로그래밍
          • DDD-START
            • Chapter5 리포지터리의 조회 기능
            • Chapter4 리포지터리와 모델 구현
            • Chapter3 애그리거트
            • Chapter2 아키텍쳐 개요
            • Chapter1 도메인 모델의 시작
  • INFO
    • 유스콘 준비
    • intellij
      • Command line is too long.
    • 프로그래밍의 종류
      • Async Await
      • Reactive Programming
      • Imperative Programming
      • Functional Programming
        • Naver D2 함수형 프로그래밍 강의
      • Object Oriented Programing
        • 객체지향에 대해서 알아보는 영상
      • ProcedureOriented Programming
      • RX(ReactiveX)
      • OOP VS FP
      • Declarative Programming
    • Language
      • Kotlin
        • 박재성님 강의
        • Kotlin Spring CGLIB Error
        • Kotlin의 사용
        • coroutine
        • Kotlin JVM
      • JavaScript
      • JAVA
        • DefaultNonnull
        • effective78
        • Exception
        • JsonUnWrappers
        • 명명짓기
        • @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
        • Enc Key
        • ServiceLoader
        • Annotation
        • JVM(Java Virtual Machine)
        • Java8
          • Functional 사용
          • Optional
          • Invalid Key size
        • Java13
          • Text Block
        • Basic
          • Generic
          • JVM
          • Interface, Implements
    • Framework
      • NodeJs
      • Xamarin
      • Vert.x
        • vert.x in action
        • eventbus
      • blockedthreadchecker
      • Why.. not root run..
      • Spring
        • Spring Test
        • Kotlin
        • ControllerAdvice 정리
        • JsonAnnotation
        • Spring Data R2DBC
        • SpringWebFlux
          • login
          • SpringWebFlux란?
        • JPA
          • QueryDSL 객체 주소값 확인할 것
          • SpringData-JPA에서 Save, SaveAll
          • @CompositeKey에 ManyToOne JoinColumn이 있을 경우
          • QueryDSL N+1 문제(@OneToOne)
          • QueryDSL설정
          • CreationTimestamp
          • Enum(@enumerated vs @convert)
        • SpringSecurity
          • aopAlliance
          • csrf 방어
          • antMatcher vs mvcMatcher
          • SpringSecurity를 왜 써야할까?
          • CoreSpringSecurity
            • AuthenticationProvider
            • AuthenticationManager
            • Authentication Flow
            • SecurityContextPersistenceFilter
            • SecurityContextHolder, SecurityContext
            • Authentication
            • 필터 초기화와 다중 보안 설정
            • DelegatingProxyChain, FilterChainProxy
            • 사이트 간 요청 위조 - CSRF, CsrfFilter
            • 예외 처리 및 요청 캐시 필터 : ExceptionTranslationFilter, RequestCacheAwareFilter
            • 인가 API - 권한 설정 및 표현식
            • SessionManagementFilter, ConcurrentSessionFilter
            • 동시 세션 제어 / 세션고정보호/ 세션 정책
            • AnonymousAuthenticationFilter
            • RememberMeAutheticationFilter
            • Logout,LogoutFilter
            • UsernamePasswordAuthenticationFilter
            • Form인증
            • 인증 API - 사용자 정의 보안 기능 구현
            • 인증 API - 스프링 시큐리티 의존성 추가
        • SpringMVC
          • Spring Bean Q&A
          • HttpServletRequest
          • @ControllerAdvice
          • Service와 ServiceImpl은 꼭 있어야할까?
          • SpringMVC-1
          • SpringMVC - validator와 Errors
          • SpringMVC - DispatcherServlet의 URL
          • Spring MVC - 기본설정(2) 및 HandlerInterceptor
          • SpringMVC-3
          • Spring MVC - ViewResolver
          • Spring MVC - XML/JSON
          • Spring MVC - Field Injection & Constructor Injection
        • SpringEtc
          • Transactional
          • @Atowired NullPointer
          • CircleReference
          • Mybatis
            • IBatis - sql에 Map
            • 1:1 Mapping시 Null
            • auto_Increment, selectKey
          • @Transactional
          • JacksonAnnotation
        • SpringAOP
        • SpringDI
    • Server
      • PM2
      • Tomcat
        • jks
        • Virtual Host(Port)
    • OS
      • Window
        • Active directory
      • IOS
      • Linux
        • samba/keroberos
        • Linux
          • unlimit / socket backLog
          • nohup
          • ; , & , &&, {}
          • 쉘
          • rc.local
          • ps aux | grep 프로세스이름
          • Vim
          • Su, Sudo
          • File Directory
        • IdConfig
        • 유용한 커맨드
        • 리눅스 대소문자
        • 소프트링크와 하드링크의 차이
        • ln -Tfs
        • //와 / 의 차이
        • Linux(202003)
          • rm
          • diff
          • cp
          • mv
          • tar 압축 시 어떻게 심볼릭 링크도 같이 압축할까?
          • tar 명령어
          • ln -s 심볼릭 링크
    • Network
      • API Architectural Styles
      • 포트 확인
      • HeartBeat Protocol
      • SSO(Single Sign On)
      • Cookie and Session
      • Tcp HandShake
      • WireShark
        • WireShark 옵션
        • WireShark 패킷분석
    • DataBase
      • DB락에 대해서 알아보기
      • Redis
      • MYSQL
        • Mysql TimeOut 설정
        • MysqlLog
        • SlowQuery Analyzing
        • PushNotification Stress Test
      • MSSQL
      • 데이터베이스 식별자 선택 전략
    • ETC
      • 이름 짓기
      • FFProbe
      • Talk
      • Untitled
Powered by GitBook
On this page

Was this helpful?

  1. INFO
  2. DataBase
  3. MYSQL

PushNotification Stress Test

PushNotification Stress Test 방법 입니다.

현재 방법은 mysql event Scheduler를 사용하여 매번 Data를 Insert하여 notification 처리 test를 하는 방법입니다.

  1. mysql Procedure을 생성합니다.

CREATE PROCEDURE [프로시저이름]() BEGIN DECLARE i INT DEFAULT 1; WHILE i <= [횟수] DO INSERT INTO talk_tblnotification (`UserID`, `PostDate`, `Sender`, `Subject`, `Type`, `LinkURL`, `ShowMsg`) VALUES ( CASE WHEN i%3 = 1 THEN [테스트아이디1] WHEN i%3 = 2 THEN [테스트아이디2] WHEN i%3 = 0 THEN [테스트아이디3] end , now(), i, 'test', '1', '1', 'N'); SET i = i + 1; END WHILE; END

2. event Scheduler가 켜져있는지 확인합니다.SHOW VARIABLES LIKE 'event%'; – 이벤트 스케쥴러 on/off 확인 SELECT * FROM information_schema.events; – 이벤트 스케쥴러 조회

3. mysql event Scheduler를 생성합니다.CREATE EVENT IF NOT EXISTS [이벤트이름] ON SCHEDULE EVERY 30 SECOND -- 30초마다 실행하도록 함. STARTS '2020-12-22 16:37:00' --시작 시간 ENDS '2020-12-22 17:37:00' -- 종료 시간 ON COMPLETION NOT PRESERVE DO call [1번에서 만든 프로시저 ];

이벤트 스케쥴러가 On인 상태에서 현재 스케쥴러를 만들면 바로 실행이 되기 때문에

특별한 이벤트 스케쥴러가 없다면 event Scheduler를 off하여 등록하고 그 후에 on 해주시길 바랍니다.SET GLOBAL event_scheduler = ON; -- 이벤트 스케쥴러 On SET GLOBAL event_scheduler = OFF; -- 이벤트 스케쥴러 off

또한 이벤트 스케쥴러는 사용자에 대한 이벤트 사용권한이 필요한 작업이므로 root 계정 혹은 해당 계정에 권한을 주시길 바랍니다.

4. Server Log 와 DB를 확인합니다.

Server Log - Notification 요청이 제대로 넘어가는지 혹은 fail로 떨어지는지 확인을 해봐야함.

DB -SELECT * FROM talk_tblnotification; -- notification이 쌓이는 Table -- 해당 notification Table에 데이터가 쌓이고 어느정도 되야 없어지는지 타임 체크가 필요함. SELECT * FROM jmocha.tbl_dev_master; -- 각 기기마다 badge 수를 확인 할 수 있음. -- 해당 요청을 받은 유저의 badge수를 더하여 요청이 제대로 갔는지 확인 할 수 있음.

5. 해당 이벤트 스케쥴러를 끄기 위해서는 event_scheduler를 껴주거나 해당 이벤트 스케쥴러를 삭제하면 됩니다.

DROP EVENT [이벤트 스케쥴러 이름]; SET GLOBAL event_scheduler = OFF; -- 이벤트 끄기

PreviousSlowQuery AnalyzingNextMSSQL

Last updated 4 years ago

Was this helpful?