일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 |
- 주키퍼
- Python
- gradle
- 코드워
- golang
- 자바
- 문제풀이
- Go언어
- go
- DP
- Java
- redis
- 리눅스
- 프로그래머스
- OOM
- 알고리즘
- 튜토리얼
- scala
- programmers
- docker
- leetcode
- zookeeper
- HBase
- boj
- Linux
- codewars
- 스칼라
- 동적프로그래밍
- 파이썬
- dynamic programming
- Today
- Total
목록2021/02 (7)
파이문
😀 0. 프로세스가 죽었다 서버의 프로세스가 메모리 부족으로 kill 되었다는 알람이 왔다. kernel: Out of memory: Kill process () score or sacrifice child 최근 서버에 서비스 몇 개를 더 띄웠는데, 그것 때문에 일어난 영향으로 보였다. 짧은 식견으로는 새로 올린 서비스가 메모리를 많이 잡아먹었고, 그렇기 때문에 새로 올린 서비스가 죽어야 한다고 생각했다. 그러나 실제로 죽은 프로세스는 HBase 의 RegionServer 였다. 확인해보니 HBase RegionServer 의 oom_score 가 더 높았었기 때문이었다. oom_score 는 여기서 짧게 작성한 적이 있는데, 쉽게 말하면 서버의 메모리가 부족할 때 oom_score 가 높은 프로세스가 ..
동일한 Column Qualifier 에서 (이를 'A' 라고 하겠다.) 조건 여러개를 OR 로 필터 하고 싶었다. 예시로 보자면 A 가 1 인 경우 또는 2인 경우를 스캔하고 싶어, 다음과 같이 작성하였다. (실제로는 Byte 값이 들어간다.) Scan scan = new Scan(); FilterList filterList = new FilterList(); SingleColumnValueFilter aIsOne = new SingleColumnValueFilter( 'CF', 'A', CompareFilter.CompareOp.EQUAL, 1 ); SingleColumnValueFilter aIsTwo = new SingleColumnValueFilter( 'CF', 'A', CompareFilte..
프로세스는 커널에게 필요한 만큼의 메모리를 요청하고 커널은 메모리 영역을 프로세스에게 주지만, 실제로는 할당은 하지 않고 해당 영역을 프로세스에게 주었다는 것을 저장해 둔다. 이 과정을 Memory commit 이라고 부른다. Memory commit 이 필요한 이유가장 큰 이유는 fork() 와 같은 프로세스를 생성하는 시스템 콜을 처리할 수 있어야 하기 때문이다. 예를 들면 물리 메모리가 4기가 일 때, 3기가 프로세스 A가 돌고 있다고 해 보자. 해당 프로세스가 자식 프로세스 B를 생성하게 (fork) 되면 자식 프로세스 B는 부모 프로세스 A와 마찬가지로 3기가 프로세스일 것이다. 하지만 이미 전체 메모리 4기가에서 3기가를 부모 프로세스 A 가 사용하고 있기 때문에 가용 메모리는 1기가 밖에 되..
docker container log가 계속 쌓여서 disk full 이 났다. 그래서 도커 컨테이너 내부 로그를 삭제 해야 했다. 스크립트로 만들기 도커 컨테이너 로그를 삭제하는 script를 만들었었다. 스크립트 예시 #!/bin/sh CONTAINER=$1 LOG=$(docker inspect --format='{{.LogPath}}' "$CONTAINER") echo "LogPath:" $LOG echo "Ary you sure clear the all $CONTAINER logs? [y|n]" read answer if [[ $answer == "y" ]]; then echo "Clear Logs!" truncate -s 0 "$LOG" fi echo "Done" 인자 값에는 container ..
gradle-ssh-plugin 문서: gradle-ssh-plugin.github.io/docs/ 저장소: github.com/int128/gradle-ssh-plugin 해당 플러그인의 장점은 병렬로 실행 된다는 것 정도 ssh example session 은 병렬로 실행 되기 때문에 아래와 같은 경우 web01, web02 가 병렬로 실행된다. 순차적으로 실행하길 원하면 ssh.runInOrder 를 사용할 것 ssh.run { session(remotes.web01) { execute 'command1' } session(remotes.web02) { execute 'command2' } } session 함수 안에서 사용하는 객체는 Remote 라는 클래스 객체로 같은 사람이 개발한 groovy..
gradle 빌드 시에 다음 에러 등장 Exception in thread "main" java.net.ConnectException: Connection refused (Connection refused)... 사용하고 있는 컨테이너 (또는 서버) 에서 gradle-bin-xxx 을 다운로드 받지 못하는 상황이었음 (Connection refused) 그런데 로컬 환경에서 다운로드 시에는 잘 됨 gradle 빌드 시에만 안되는 것이였음 이럴 경우 proxy 설정을 의심해 볼 수 있다. (서버에서 외부 리소스 다운로드를 막아두었던지 하는 등의 이슈) 2가지 방법이 있는데 gradle.properties 를 수정하는 방법 또는 gradlew 에서 JVM Option 을 수정하는 방법이 있다. 두개가 서로 ..
상황 git rm /path/to/file git commit -m "Delete wrong file" . git push git rm (--cached 없이) 으로 파일을 삭제하고 커밋하고 push 까지 해 버림 (...) (원래는 git mv 로 파일을 변경했는데 source 파일을 삭제 안하고 target 파일을 삭제했다는 TMI) 목표 이 때 잘못 삭제한 파일을 복구하고 싶었다. Example git version < 2.23 # 복구할 version 확인하기 $ git log # version 으로 이동 $ git reset # 삭제한 파일을 다시 가져온다 $ git checkout -- /path/to/file # 다시 커밋함 $ git commit -m "Fix" /path/to/file #..