반응형

 

https://github.com/scouter-project/scouter/blob/master/scouter.document/main/Stand-alone-Java-Batch-Agent_kr.md

 

scouter-project/scouter

Scouter is an open source APM (Application Performance Management) tool. - scouter-project/scouter

github.com

 

# class 명칭으로 등록

batch_id_type=class

 

# 클래스 명칭으로 사용

batch_id=0

 

#명시된 서비스만 후킹

hook_service_patterns=on.batch.*

반응형

'UTILITY' 카테고리의 다른 글

7-ZIP CPU 사용률 제한  (0) 2022.05.11
ghost 옵션  (0) 2019.11.27
POSTMAN Spring 에 Post 데이터 전송 예  (0) 2019.05.27
정규식 방법  (0) 2014.06.17
Process Hacker  (0) 2014.03.26
반응형

 

1. goaccess 라는 녀석을 설치한다.

#> yum install goaccess

 

관련 URL : https://goaccess.io/

 

GoAccess - Visual Web Log Analyzer

Why GoAccess? GoAccess was designed to be a fast, terminal-based log analyzer. Its core idea is to quickly analyze and view web server statistics in real time without needing to use your browser (great if you want to do a quick analysis of your access log

goaccess.io

 

2. 다음 명령을 통해 html 로 출력한다. (실시간)

goaccess -f [log파일] -o [출력html파일명] --log-format=COMMON --real-time-html

 

참고 : https://ma.ttias.be/analysing-webservers-logs-locally-with-goaccess/

 

Analysing webservers logs locally with goaccess

I want to show you how I use a tool called goaccess to do some quick analysis of access logs on webservers.

ma.ttias.be

 

 

반응형
반응형

 

참고 : https://programmer.ink/think/jvm-series-jvm-tuning-jps-jstat-jmap-jhat-jstack-jinfo.html

 

jvm series: jvm tuning - jps jstat jmap jhat jstack jinfo

jvm series: jvm tuning - jps jstat jmap jhat jstack jinfo Posted by Emma on Sun, 02 Jun 2019 21:01:42 +0200 From: https://www.cnblogs.com/ityouknow/p/5714703.html Using the command of JVM can help us locate the problem easily in production monitoring and p

programmer.ink

 

1. JMAP 

 

힙 메모리 보기

$>  jmap -heap [pid]

 

덤프 생성

$> jmap -dump:live,file=[생성할 파일경로및파일명] [pid]

 

생성된 덤프를 바로 웹으로 보고 싶다면

$> jhat -J-Xmx[메모리사이즈:덤프크기보다 크게] -port [사용할포트] [생성한 파일경로및파일명]

-> ex> jhat -J-Xmx2g -port 10000 /tmp/dump.bin

 

자바 jmap으로 heap 메모리 분석(jmap -heap pid) 수행시 오류 발생 할때

 

Heap Usage:
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at sun.tools.jmap.JMap.runTool(JMap.java:201)
        at sun.tools.jmap.JMap.main(JMap.java:130)
Caused by: java.lang.RuntimeException: unknown CollectedHeap type : class sun.jvm.hotspot.gc_interface.CollectedHeap
        at sun.jvm.hotspot.tools.HeapSummary.run(HeapSummary.java:157)
        at sun.jvm.hotspot.tools.Tool.startInternal(Tool.java:260)
        at sun.jvm.hotspot.tools.Tool.start(Tool.java:223)
        at sun.jvm.hotspot.tools.Tool.execute(Tool.java:118)
        at sun.jvm.hotspot.tools.HeapSummary.main(HeapSummary.java:50)
        ... 6 more

 

아래와 같이 설치가 가능함(아래는 java 1.8임)

yum --enablerepo='*-debug*' install java-1.8.0-openjdk-debuginfo.x86_64

 

위 명령 수행시 오류 날때는 버전이 맞지 않아서 임

 

아래에서 버전 확인 뒤

http://debuginfo.centos.org/7/x86_64/

 

Index of /7/x86_64

 

debuginfo.centos.org

 

wget 명령을 통해 위의 다운로드 주소 붙여넣고

 

rpm -ivh 파일명 을 통해 설치

 

2. 메모리 튜닝

 

https://nozaki.me/roller/kyle/entry/memory-usage-tuning-of-java8

 

java 다음에 옵션 추가

 

예) java -Xms256m -Xmx512m -XX:MaxDirectMemorySize=512M  -XX:MaxMetaspaceSize=512m -XX:CompressedClassSpaceSize=256M -XX:ReservedCodeCacheSize=256M

 

3. jstat (메모리 모니터링)

 

프로세스의 메모리 상태 보기

 

$> jstat [옵션] [pid] [ms] [반복회수 : 없으면 무한]

ex> jstat -gc 10222 1000

=> pid 10222에 대해 1초에 한번 프로세스 메모리 상태를 조회

 

아래 URL을 통해 GUI 값으로 확인 가능

http://nix-on.blogspot.com/2015/01/java-jstat-how-to-visualize-garbage.html

 

Java jstat - how to visualize garbage collection statistics quickly

jstat Garbage Collection visualizer jstat  is useful for getting a quick overview of the...

nix-on.blogspot.com

 

[옵션]

class : 클래스 로더의 동작에 관한 통계

compiler : 핫스팟 Just-In-Time 컴파일러 동작에 관한 통계

gc : 가비지 컬렉트된 Heap 동작에 관한 통계

gcapacity : 세대 마다 용량과 대응하는 영역에 관한 통계

gccause : gcutil의 직전 및 현재의 가비지 컬렉션 이벤트의 원인

gcnew : New 세대의 동작에 관한 통계

gcnewcapacity : New 세대의 사이즈와 대응하는 영역에 관한 통계

gcold : old 세대 및 Permanent 세대의 동작에 관한 통계

gcoldcapacity : Old 세대의 사이즈에 관한 통계

gcpermcapacity : Permanent 세대의 사이즈에 관한 통계

gcutil : 가비지 컬렉션 통계

printompilation : 핫스팟 컴파일 방법의 통계

 

 

 

4. 번외로 시스템 io 체크

 

iostat -x [인터벌] [회수]

$> iostat -x 1 10 

반응형
반응형

처음 배우는 스프링 부트 2

 

책 자체가 현재 구성과 맞지 않아 저자에게 문의하였고

(무료 IntelliJ + start.spring.io 설정 맞추기)

 

3줄 회신이 왔는데 아래를 참고하라고 하였습니다.

 

아쉬운건 변화 무쌍한 환경에서 변경되는 내역 업데이트를 위한 게시판이 없는게 많이 아쉽네요

 

회사에서 스프링 부트 관련하여 같이 공부할 책을 찾고 있는 중인데

 

결정에 많은 도움이 되었네요

 

※ 만약 oracle JDK8이 아닌 OpenJDK 8로 사용하고 plugins 방식으로 gradle 빌드하면 무조건 오류가 납니다.

 

-------------------------------------------------- 

 

**Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target**
** ... 255 more**
**Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target**
** ... 255 more**

 

-------------------------------------------------- 

 

위의 경우는 가볍게 OpenJDK 11로 다운받아 JAVA_HOME 설정후 build gradle 수행하면 잘 됩니다 !

(cacerts 방식은 Oracle JDK에만 해당되는것 같네요)

책 발매일은 모르겠지만, 이제는 JDK 11이상으로 사용하지 않을까 싶네요...

 

인텔리제이 설정 참고 : https://www.bsidesoft.com/6926

 

buildscript 방식과 plugins 방식이 존재하며, 

start.spring.io에서는 plugins(신규) 방식으로 build.gradle 가 만들어 집니다.

아래는 buildscript 방식

 

-------------------------------------------------- 

 

buildscript {
    ext{
        springBootVersion='2.2.6.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group 'com.bsidesoft'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter-web')
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

 

-------------------------------------------------- 

 

 

74 Page : 3.1 @SpringBooTest 프로젝트 파일

책 교제와 다르게 오류가 발생하여 아래 내역을 업데이트 한 파일

-> SpringBootVersion : 2.2.6

    Gradle : 4.10.1 

3.1장_SpringBootTest_74p.zip
0.08MB

 

-------------------------------------------------- 

 

 

80 Page : 3.2 @WebMvcTest 프로젝트 파일

책 교제와는 다르게 /src/main/resource/templates/book.html 추가해야 됨(book 객체를 얻어옴)

book.html 파일 내용

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8"/>
    <title>book</title>
</head>
<body>

</body>
</html>

3.2장_SpringBootTest_80p.zip
0.08MB

 

-------------------------------------------------- 

 

81 Page: 3.3 @DataJpaTest

기본적으로 lombok 를 설치하지 않으면 builder() 메서드 밑에 붉은색 줄이 가면서

문제를 야기 시킨다.

File -> Settings -> Plugins -> 상위탭에서 Marketplace 선택 -> lombok 선택 후 설치 -> ide 재기동 

 

File -> Settings -> Build, Excution, Deployment -> Compiler -> Annotation Processors 선택

우측에

Enable annotation processing 선택 -> OK

 

3.3장_SpringBootTest_81p.zip
0.08MB

 

-------------------------------------------------- 

 

 

88 Page : 3.4 @RestClientTest

만약 위의 lombok 를 체크하지 않으면 BookRestTest.java 에서 book.getTitle() 부분의 오류가 보임

3.4장_SpringBootTest_89p.zip
0.08MB

 

-------------------------------------------------- 

 

 

90 page : 3.5 @JsonTest

3.5장_SpringBootTest_91p.zip
0.08MB

 

-------------------------------------------------- 

 

 

96 Page : 신규 커뮤니티 게시판 프로젝트 Web 구성 의존성 관련(2020.05.19)

 

-------------------------------------------------- 

 

 

109 Page 예제 4-9전 까지 압축파일

build.gradle 부분의 약간 수정이 필요

 

4장_web_109p.zip
0.16MB

 

* 설정 (build.gradle)

sping boot 2.2.x 부터는 Junit 5으로 사용되기 때문에

 

 

-------------------------------------------------- 

 

	(2.2.x 부터 추가된 설정으로 Junit 5설정으로 예제 돌리면 오류)
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
		exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
	}
    
    * 위의 부분에서 { ~ } 까지를 빼면 Junit 4설정으로 수행되기 때문에 오류 없음
    * 또한 위의 설정으로 Test들을 수행하면 @RunWith, @Before, @Test 등이 모두 오류 발생   

 

또는 아래 URL을 참고하여 JUnit 5으로 넘어가도 됨...

java.ihoney.pe.kr/525

 

[springboot] JUnit 5 적용기

이미 나온지 꽤 시간이 흐른 Junit 5를 살펴보기 시작한다.

java.ihoney.pe.kr

 

-------------------------------------------------- 

 

 

plugins {
    id 'org.springframework.boot' version '2.3.0.RELEASE'
    id 'io.spring.dependency-management' version '1.0.9.RELEASE'
    id 'java'
}

group = 'com'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    runtimeOnly 'com.h2database:h2'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation('org.springframework.boot:spring-boot-starter-test')
}

test {
    useJUnitPlatform()
}

 

-------------------------------------------------- 

 

여기 다음 부터는 비공개로 쑥 ~

 

반응형
반응형

1. 사용방법

# ss –[옵션]
-a : 모든 포트 확인
-t : TCP 포트 확인
-u : UDP 포트 확인
-l : LISTEN 상태 포트 확인
-p : 프로세스명을 표시
-n : 호스트 / 포트 / 사용자이름을 숫자로 표시
-i : 정보보기
-s : 통계 정보 보기

> 전체 tcp : ss -at
> 전체 udp : ss -au
> 전체 Listen 포트 : ss -l
> 전체 Listen tcp 포트 : ss-tl
> Established 상태의 포트 조회 : ss -o state established
> 프로세스명 표기 : ss -p
> 소켓 메모리 사용 : ss -ltm
> 연결된 시간 표기 : ss -tn -o
> 1초에 한번 통계 정보 보기 : watch -n 1 "ss -s"
> tcp 연결에 목적지 443 포트나 80 포트 조회 : ss -nt '( dst :443 or dst :80 )'

> tcp의 목적지 IP가 127.0.0.1이고 소스는 5000번 이상 큰 경우 : ss -nt src 127.0.0.1 sport gt :5000
     <= or le : Less than or equal to port
     >= or ge : Greater than or equal to port
     == or eq : Equal to port
     != or ne : Not equal to port
     < or gt : Less than to port
     > or lt : Greater than to port

2. IP와 프로세스 삭제

dport 옵션과 = 포트번호 사이는 반드시 띄어쓰기를 해야한다.

# ss -kill dst 192.168.216.133 dport = 1234

Netid       State        Recv-Q        Send-Q                  Local Address:Port                   Peer Address:Port
tcp         ESTAB        0             0                        192.168.100.122:52218               192.168.216.133:1234

3. 출력 단어 설명
RTO(Retransmission TimeOut) : 타이머가 작동하는 시간을 의미
RTT(Round Trip Time) : 네트워크 통신을 하는 두 노드 간에 패킷이 전달되는데 소요된 시간을 의미

내부 TCP 정보를 표시합니다. 아래 필드가 나타날 수 있습니다.

              ts     타임 스탬프 옵션이 설정된 경우 ts 표시

              sack  sack 옵션이 설정된 경우 sack 표시

              ecn  명시적 정체 알림 옵션이 설정된 경우 ecn 표기 (explicit congestion notification)

              ecnseen 수신 패킷에서 ecn 플래그가 발견된 경우 표기

              fastopen
                     show string "fastopen" if the fastopen option is set

              cong_alg "cubic" 혼합 알고리즘 기본 설정
                     the congestion algorithm name, the default congestion
                     algorithm is "cubic"

              wscale::
                    window 창 옵션을 사용하는 경우 송신 스케일 요소와 수신 스케일 요소를 표시

              rto:
                     TCP 재전송 시간 종료값 (단위는 밀리 초)

              backoff:
                     지수 백 오프 재전송에 사용되는 실제 재전송 시간 초과 값은 icsk_rto << icsk_backoff 

              rtt:/
                     rtt는 평균 왕복 시간이고, rttvar은 rtt의 평균 편차이며, 단위는 밀리초 입니다.

              ato:
                     ack 시간 초과, 단위는 밀리초, 지연 ack 모드에 사용

              mss:
                     최대 세그먼트 크기

              cwnd:
                    혼합 window 크기

              pmtu:
                     경로 MTU 값

              ssthresh:                     
                     tcp 혼합 window 느린 시작 임계값

              bytes_acked:
                     bytes acked

              bytes_received:
                     bytes received

              segs_out:
                     전송된 세그먼트

              segs_in:
                     수신된 세그먼트
                     
              send bps
                     밖으로 나간 bps

              lastsnd:
                     마지막으로 보낸 패킷 이후의 시간은 밀리초입니다.

              lastrcv:
                     마지막으로 받은 패킷 이후의 시간은 밀리초입니다.

              lastack:
                     마지막 ack 이후 수신된 시간은 밀리초입니다.

              pacing_rate bps/bps
                     가격 및 최대 간격

              rcv_space:
                     TCP 내부 자동 튜닝 소켓 수신 버퍼를 위한 도움 변수

반응형
반응형

 

 

  웹서버 권고 파라미터 : https://waspro.tistory.com/406
WAS서버 권고 파라미터 : https://waspro.tistory.com/407
일반적인 권고 파라미터 : https://yoonroot.tistory.com/entry/Parameter-CentOS-Parameter-%EA%B3%84%EC%86%8D-%EC%B6%94%EA%B0%80-%EC%98%88%EC%A0%95

 

[WEB Server] TCP 권고 Parameter

본 포스팅은 WEB Server 설치 시 권고 파라미터에 대해 알아보겠습니다. WEB Server 설치 시 OS Kernel 권고 Parameter에 대해 살펴보겠습니다. 파라미터 설명 권고값 net.ipv4.tcp_keepalive_intvl TCP TIME_WAIT..

waspro.tistory.com

 

 

[WAS Server] TCP 권고 Parameter

본 포스팅은 WAS Server 설치 시 권고 파라미터에 대해 알아보겠습니다. WAS Server 설치 시 OS Kernel 권고 Parameter에 대해 살펴보겠습니다. 파라미터 설명 권고값 net.ipv4.tcp_keepalive_intvl TCP TIME_WAIT..

waspro.tistory.com

 

[Parameter] CentOS Parameter (계속 추가 예정)

1. 테스트 환경 - OS: CentOS 7.5 기준 2. 설정 방법 - parameter setting vi /etc/sysctl.conf - parameter apply sysctl -p >> growpart <하드디스크명> <파티션번호> - parameter check sysctl -a 3. parameter..

yoonroot.tistory.com

OS 전체 파라미터 설명 : https://chanchan-father.tistory.com/278

 

OS 최적 설정 가이드

1. sysctl 파라미터 1) sysctl 정의 - sysctl은 kernel parameter 값들을 조정하기 위한 utility입니다. - sysctl이 조절할 수 있는 값들은 /proc/sys/ 아래에 있는 리스트들입니다. - RHEL에서는 procps라는 패키..

chanchan-father.tistory.com

 

네트워크 capacity 관련 파라미터

 

1. 리눅스 전체 파일 개수 제한
  - 부족시 : too many open files 에러 발생
  - 정보조회 : sysctl fs.file-max
  ※ 현재 열린 개수 : sysctl fs.file-nr
 
  - 임시 적용 : ulimit -SHn 값
  - 영구 적용 : /etc/security/limits.conf 수정
     > https://sysops.tistory.com/99
 

2. backlogs (네트워크 패킷 처리 큐량) 

  - In-Bound Queue 길이 증가
    > net.core.netdev_max_backlog : 각 네트워크 장치 별로 커널이 처리하도록 쌓아두는 Queue의 크기를 설정   
    > net.core.netdev_max_backlog 이 미정의되면 값이 1000 기본
    > 적용
       /etc/sysctl.conf 파일내
       net.core.netdev_max_backlog=30000
      
   - listen 값 변경 (accept를 기다리는 ESTABLISHED 상태 소켓 큐)
     기본값은 128
     > 적용
       /etc/sysctl.conf 파일 내
       net.core.somaxconn=1024
      
    - listen 값 변경 (SYN-RECEIVE 상태의 소켓)  
     > 적용
       /etc/sysctl.conf 파일 내
       net.ipv4.tcp_max_syn_backlog=1024
      

3. 사용할 수 있는 포트 RANGE
   - 확인 명령
     > sysctl net.ipv4.ip_local_port_range

   - 적용     
     /etc/sysctl.conf 파일 내
      net.ipv4.ip_local_port_range=1024 65535
     
4. 서버 메시지 큐 관련    
    - 확인 명령
      >    sysctl kernel.msgmax
 
    /etc/sysctl.conf 파일 내   
    - 하나의 프로세스에서 다른 프로세스로 보내질 수 있는 최대 메시지 사이즈 지정  (아래는 기본 크기)
   
    # 최대 메시지 큐의 크기를 지정하며 bytes 단위로 지정 (최대 65,536보다 작게 설정함)
    kernel.msgmax = 8192   
    

 

    # kernel.msgmni (자동할당되는 최대 메시지 큐)


    # 기본 메시지 큐의 최대 크기 (최대 메시지 큐의 크기보다 작거나 같아야 함)
    kernel.msgmnb = 16384   

 

 


clear
echo ""
echo "1. TCP Time Wait 상태를 유지하는 시간 변수 조회(기본 : 7200초)"
echo " > WEB,WAS 서버 기준 : 15"
echo ""

sysctl -a | grep net.ipv4.tcp_keepalive_intvl

echo ""
echo "2. Keep Alive가 끊어졌다고 판단하고 세션을 정리하는 동안 보낼 Ping-Pong 패킷 수(기본 :9)"
echo " > WEB,WAS 서버 기준 : 5"
echo ""

sysctl -a | grep net.ipv4.tcp_keepalive_probes

echo ""
echo "3. 세션이 끊어지지 않게 Keep Alive Time 설정 (기본 : 7200)"
echo " > WEB, WAS 서버 기준 : 30 / 데몬 서버는 연결되어야할 초 시간 기준으로 설정함."
echo ""

sysctl -a | grep net.ipv4.tcp_keepalive_time

echo ""
echo "4. 사용할 수 있는 포트 범위를 설정 "
echo " > WEB, WAS 서버 기준 : 1024 - 65000"
echo ""

sysctl -a | grep net.ipv4.ip_local_port_range

echo ""
echo "5. 각 네트워크 장치 별로 커널이 처리하도록 쌓아두는 Queue의 크기 설정 (기본 1000)"
echo " > WEB, WAS 서버 기준 : 2,500"
echo " ※ 일부 소켓 accept라고 오역되는 사이트가 존재함"
echo ""

sysctl -a | grep net.core.netdev_max_backlog

echo ""
echo "6. Accept를 기다리는 ESTABLISHED 상태 소켓 큐 (기본 128)"
echo " > 5번의 큐 크기의 1/30 정도의 크기를 할당함"
echo ""

sysctl -a | grep net.core.somaxconn

echo ""
echo "7. SYN-RECEIVE 상태의 소켓 큐(기본 128)"
echo " > 5번의 큐 크기의 1/30 정도의 크기를 할당함"
echo ""

sysctl -a | grep net.ipv4.tcp_max_syn_backlog

echo ""
echo "8. TCP 연결 문제시 재시도하는 횟수"
echo " > WEB, WAS 서버 기준 : 3"
echo ""

sysctl -a | grep net.ipv4.tcp_retries1

echo ""
echo "9. TCP 연결 끊기전에 재시도하는 횟수 "
echo " > WEB, WAS 서버 기준 : 3"
echo ""

sysctl -a | grep net.ipv4.tcp_retries2

echo ""
echo "10. TCP 수신 버퍼의 최대값 설정 "
echo " > WEB, WAS 서버 기준 : 56777216"
echo ""

sysctl -a | grep net.core.rmem_max

echo ""
echo "11. TCP 수신 버퍼크기 기본값 설정"
echo " > WEB, WAS 서버 기준 : 16777216"
echo ""

sysctl -a | grep net.core.rmem_default

echo ""
echo "12. TCP 전송 버퍼크기 최대값 설정"
echo " > WEB, WAS 서버 기준 : 56777216"
echo ""

sysctl -a | grep net.core.wmem_max

echo ""
echo "13. TCP 전송 버퍼크기 기본값 설정"
echo " > WEB, WAS 서버 기준 : 16777216"
echo ""

sysctl -a | grep net.core.wmem_default

echo ""
echo "14. 65Kb 이상의 큰 TCP 윈도우 스케일링 사용"
echo " > WEB, WAS 서버 기준 : 1 "
echo ""

sysctl -a | grep net.ipv4.tcp_window_scaling

echo ""
echo "15. 서버 측에서 닫은 TCP 연결을 끊기 전에 확인하는 횟수(기본값 7 RTO)"
echo " > WEB, WAS 서버 기준 : 0"
echo ""

sysctl -a | grep net.ipv4.tcp_orphan_retries

echo ""
echo "16. SYNC 패킷을 전송 후 일부 ACK를 받지 못했을 때 선택적으로 ACK 패킷을 받도록 설정(0 : 받지않음, 1: 패킷유실 많은 사이트)"
echo " > WEB, WAS 서버 기준 : 0"
echo ""

sysctl -a | grep net.ipv4.tcp_sack

echo ""
echo "17. TCP 연결 해제 시간 (기본 : 60초)"
echo " > WEB, WAS 서버 기준 : 15"
echo ""

sysctl -a | grep net.ipv4.tcp_fin_timeout

echo ""
반응형
반응형

메인 안내 페이지

 

https://developers.google.com/web/tools/chrome-devtools

 

Chrome DevTools  |  Tools for Web Developers  |  Google Developers

Option 1

developers.google.com


하나씩 개발도구 및 CSS 설정들을 보며 따라해 보기

 

https://developers.google.com/web/tools/chrome-devtools/css

 

Get Started With Viewing And Changing CSS  |  Tools for Web Developers

Learn how to use Chrome DevTools to view and change a page's CSS.

developers.google.com

 

 

반응형
반응형

서비스를 많이하는 업체에서

 

각 서비스 Zone이 다르고

 

유지보수하는 인력은 한정적이고

 

나 였다면 어떻게 할까라는 고민을 해보았다...

(방화벽, 보안 요소, SMS를 테이블 설계등은 고민 요소)

 

서비스 A Zone

web1, was1, db1

a. 시스템 모니터링 쉘 or java를 통해 시스템 관련 정보를 수집하여

   db1으로 전송

b. db1에서는 RabbitMQ 서버로 대량으로 데이터를 전송

 

통합 모니터링 서버 Zone

 

RabbitMQ Server, DB 서버, 모니터링 서버, sms 서버

 

a. RabbitMQ서버에 수집된 row 정보를 DB로 적재

b. db적재시 임계치 (ex 80% 이상 담당자 sms)에 따라

   sms 전송 적재

c. 모니터링 서버는 모든 통합시스템(이기종)에 대해 서비스 모니터링 수행

 

* 시각화를 위해 키바나(Kibana) 접목도 고려 할 수 있음

  또한 데이터 적재를 빅데이터 구조로 하려면(dynamic kibana) ElasticSearch도 고민할 필요 있음

 

역동적인 요소가 중요할지 알람(SMS)가 중요할지는 고민할 필요가 있는 내용....

반응형
반응형


무료 QR 코드 생성

http://mqr.kr/

텍스트, 명함, Vcard 명함, 일정, URL, 이메일, 전화번호, SMS, Wifi, 지도좌표(구글맵), 지도좌표(다음맵) 지원


https://qr.naver.com/

링크 URL, 소개글, 이미지, 동영상(유투부, 네이버), 네이버지도, 연락처


http://qrdroid.com/generate/

URL, 텍스트, 연락처, SMS, Email, 회사, 이벤트 일정, 구글맵 좌표


 https://www.qrcode-monkey.com/
 색상을 사용자가 임의로 지정할 수 있음
 
 URL, TEXT, Email, PHONE, SMS, VCARD, MECARD, 구글맵 좌표, 페이스북, 트위터, 유투브, 와이파이, 이벤트, 비트코인 지원

반응형

'유용한 링크 모음' 카테고리의 다른 글

공인인증서 관련 개발사이트  (0) 2011.09.01
해킹 관련 랭킹 사이트  (0) 2011.08.23
할인 쿠폰 사이트  (0) 2010.08.27
드로잉 사이트  (0) 2010.02.08
반응형

스프링 (STS 4.0.1) 이후 인증서 오류가 발생할 때가 있습니다.

 

Service URL : https://start.spring.io 

불러오는 중입니다...

오류 내역

 

1. InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

 

2. SuncertPathBuilderException: unable to find valid certification path to requested target

 

 

유효한 인증서를 찾을 수 없다는 오류로 자체 (설치 된 PC)의 인증서 파일에(cacerts) 인증서 목록(keystore)를 추가해야 합니다.

 

1. download source

  https://gist.githubusercontent.com/lesstif/cd26f57b7cfd2cd55241b20e05b5cd93/raw/InstallCert.java

불러오는 중입니다...

  위 사이트에서 해당 InstallCert.java 파일 내 PC에 다운로드 받습니다.

 

2. 컴파일

   javac InstallCert.java 

  위 명령을 통해 컴파일 합니다.

 

3. 실행

신뢰할 수 있는 인증 주소에(start.spring.io)를 추가하기 .

  

java -cp . InstallCert start.spring.io


Server sent 2 certificate(s):

 1 Subject CN=*.spring.io, OU=Spring, O="Pivotal Software, Inc.", L=Palo Alto, ST=California, C=US
   Issuer  CN=DigiCert SHA2 Secure Server CA, O=DigiCert Inc, C=US
   sha1    2e b5 a4 67 23 a3 65 a7 c6 da 70 63 00 b3 1a 0c 90 90 04 a6
   md5     ae 16 19 3c 39 a2 12 59 4c 56 f0 c0 e4 02 5f 0e

 2 Subject CN=DigiCert SHA2 Secure Server CA, O=DigiCert Inc, C=US
   Issuer  CN=DigiCert Global Root CA, OU=www.digicert.com, O=DigiCert Inc, C=US
   sha1    1f b8 6b 11 68 ec 74 31 54 06 2e 8c 9c c5 b1 71 a4 b7 cc b4
   md5     34 5e ff 15 b7 a4 9a dd 45 1b 65 a7 f4 bd c6 ae

Enter certificate to add to trusted keystore or 'q' to quit: [1]
1

*.spring.io 부분이 있는 인증서를 선택하면 되는데 1번 이 해당됨

 

 


Added certificate to keystore 'jssecacerts' using alias 'start.spring.io-1'

불러오는 중입니다...

 

위의 키 값을 jssecacerts로 저장합니다.

 

5. 저장된 Keystore로부터 인증을 추출합니다.

 

C:\RabbitMQ_WorkSpace>dir
 C 드라이브의 볼륨에는 이름이 없습니다.
 볼륨 일련 번호: AC4A-6A9A

 C:\RabbitMQ_WorkSpace 디렉터리

2020-01-13  오후 04:05    <DIR>          .
2020-01-13  오후 04:05    <DIR>          ..
2020-01-13  오후 03:45    <DIR>          .metadata
2020-01-13  오후 04:05             1,086 InstallCert$SavingTrustManager.class
2020-01-13  오후 04:05             6,181 InstallCert.class
2020-01-13  오후 04:04             8,450 InstallCert.java
2020-01-13  오후 04:06             1,673 jssecacerts
2020-01-13  오후 03:45    <DIR>          Servers
               4개 파일              17,390 바이트
               4개 디렉터리  153,032,622,080 바이트 남음

C:\RabbitMQ_WorkSpace>keytool -exportcert -keystore jssecacerts -storepass changeit -file output.cert -alias start.spring.io-1
인증서가 <output.cert> 파일에 저장되었습니다.

 

keytool -exportcert -keystore jssecacerts -storepass changeit -file output.cert -alias start.spring.io-1

 

위의 명령을 통해 output.cert 파일을 만듭니다.

 

6. JDK에 해당 인증 키값을 추가하여 줍니다.

C:\Users\HJP>echo %JAVA_HOME%
C:\jdk-9+181_windows-x64_ri\java-se-9-ri\jdk-9

위의 명령어와 같이 JAVA_HOME 디렉토리를 확인합니다.

 

그 폴더에서 파일 찾기 하여 cacerts 파일을 찾습니다.

 

C:\RabbitMQ_WorkSpace>keytool -importcert -keystore C:\jdk-9+181_windows-x64_ri\java-se-9-ri\jdk-9\lib\security\cacerts -storepass changeit -file output.cert -alias letsencrypt
경고: -cacerts 옵션을 사용하여 cacerts 키 저장소에 액세스하십시오.
소유자: CN=*.spring.io, OU=Spring, O="Pivotal Software, Inc.", L=Palo Alto, ST=California, C=US
발행자: CN=DigiCert SHA2 Secure Server CA, O=DigiCert Inc, C=US
일련 번호: 2329581437e1d99e0471dbdf6b41676
적합한 시작 날짜: Fri Mar 15 09:00:00 KST 2019 종료 날짜: Wed Apr 01 21:00:00 KST 2020
인증서 지문:
         SHA1: 2E:B5:A4:67:23:A3:65:A7:C6:DA:70:63:00:B3:1A:0C:90:90:04:A6
         SHA256: 50:9F:AD:89:2A:6E:58:8B:56:22:91:47:0C:92:49:F2:83:CA:1F:D3:29:35:99:15:16:DD:FF:09:C0:00:0D:BB
서명 알고리즘 이름: SHA256withRSA
주체 공용 키 알고리즘: 2048비트 RSA 키
버전: 3

 

keytool -importcert -keystore C:\jdk-9+181_windows-x64_ri\java-se-9-ri\jdk-9\lib\security\cacerts -storepass changeit -file output.cert -alias letsencrypt

 

위와 같이 cacerts 파일의 경로를 정확하게 기재 후 적용하면 됩니다.

 

그 후로는 start.spring.io 서버 접근시 오류가 없게 됩니다.

 

 

 

반응형

+ Recent posts