본문 바로가기

전체 글418

k6 retry와 sleep k6를 사용하다보니 request fail 횟수가 드문드문 나와서 retry를 줬을때는 request fail이 얼마나 발생하는지 알고 싶어졌다. k6 자체적으로 retry를 제공해 주지는 않는 것 같고 아래와 같이 custom function을 만들어야 하는 것 같다. import { sleep } from 'k6'; import http from 'k6/http'; function httpGet(url, params) { var res; for (var retries = 3; retries > 0; retires--) { res = http.get(url, params) if (res.status != 400 && res.status < 500){ return res; } sleep(1); } ret.. 2024. 4. 5.
tensorflow serving memory leak?? 아래의 docker hub를 통해 tensorflow serving 이미지를 다운 받는다. https://hub.docker.com/layers/tensorflow/serving/2.14.1-gpu/images/sha256-cdae1c60c07d1ffc94ebc086e0f1a4d7f1ecc52f3fec558f1f7b506dfd4edce2?context=explore Docker hub.docker.com $> docker pull tensorflow/serving:2.14.1-gpu model은 dockerhub git에 있는 예제 프로그램 대로 실행해본다. 1. 우선은 git 받기 $> git clone https://github.com/tensorflow/serving 2. 환경 변수 정의하기 $> .. 2024. 4. 2.
es curator es에서 index가 기하급수적으로 늘어나면서 디스크 용량이 부족해지기 시작했다. index 정리를 하자... 그래서 찾아본게 curator!! 쉽게 말해서 index를 날짜 패턴별로 삭제를 쉽게 도와주는 프로그램이다. 이제 curator를 설치하고 실행하는 걸 해 보자. 아래와 같이 curator를 설치한다. $> pip install elasticsearch-curator 설치 시에 중요한 점이 있는데 curator 버전과 es의 버전을 major 정도는 맞춰주어야 동작이 원할하게 된다. 만약에 버전이 안 맞는 경우 curator 실행 시에 아래와 같은 에러가 발생 할 수 있다. File "/hanmail/.pyenv/versions/3.9.4/lib/python3.9/base64.py", line .. 2024. 3. 8.
kibana 단축 url 만들기 kibana url을 공유할 때면 url이 너무 크고 복잡해서 읽기도 힘들고 어렵다. 그래서 찾아본 결과 아래의 형태의 단축 url을 만들수가 있다. https://test-kibana.com/goto/241148663024b73eb8119de13732df6 방법은 의외로 너무나 간단하다. 일단 kibana를 열고 왼쪽 상단의 menu 중 share 메뉴를 클릭한다. share 버튼을 클릭하면 아래와 같은 창이 생성되는데 여기서 short url 버튼을 enable 시켜주면 kibana 단축 url이 생성된다. 2024. 2. 7.
pod evicted 난 pod 일괄 삭제하기 evicted가 된 pod의 경우 계속 pod에 남아 있어서 k8s 화면에 빨간색으로 떠 있게 된다.. (이게 너무 싫음) 그래서 evicted된 pod를 모두 일괄 삭제하기로 했다. 우선 evicted된 원인 확인을 위해 evicted 된 pod의 describe를 log에 저장한다. kubectl get pods | grep Evicted | awk '{print $1}' | xargs kubectl describe pods {} > evicted.log 해당 log 저장이 완료되었으면 이제 해당 pod들을 삭제해주자. k get pods | grep Evicted | awk '{print $1}' | xargs kubectl delete pods {} 2024. 2. 6.
rdd mapPartitions와 foreachPartition 비교 쓰면서 늘 헷갈리는게 foreachPartition인 것 같다. 이게 무슨 용도로 있는 함수인가... 그래서 이번 기회에 mapPartitions와 foreachPartition을 비교해 보기로 했다. 아래와 같이 코드를 작성한다. num_rdd = sc.parallelize(range(100000), 10) num_rdd.getNumPartitions() getNumPartitions를 찍어보면 10개가 찍히는 걸 확인할 수 있다. 이제 map으로 돌릴 함수를 선언하자 def square(num_list): for num in num_list: yield num * num mapPartitions의 경우 yield 값을 넘겨주어야 iterate 동작을 할 수가 있다. 이제 이 함수를 mapPartiti.. 2024. 2. 5.
java.lang.IllegalAccessError: class org.apache.spark.storage.StorageUtils$ cannot access class sun.nio.ch.DirectBuffer spark session 생성 시에 아래와 같은 에러가 발생 했다. java.lang.IllegalAccessError: class org.apache.spark.storage.StorageUtils$ (in unnamed module @0x706a04ae) cannot access class sun.nio.ch.DirectBuffer 에러가 발생되는 코드는 아래와 같다. SparkSession.builder().config(sparkConf) .getOrCreate() 평상 시에 늘 쓰던 구문인데 갑자기 에러가 발생해서 당황했다. ㅠ_ㅠ 구글링을 해도 별다른 말을 없고.... intelliJ에서 이리저리 설정을 찾던 도중 아래와 같이 Run configuration이 java 11로 되어 있다는 사실을.. 2024. 1. 8.
k6로 성능 테스트 하기 mac 환경에서 성능 테스트를 진행할 목적으로 k6를 써보기로 했다. 설치는 간단하다. 아래와 같이 설치 하자 $> brew install k6 k6를 실행하기 위해서는 실행 코드가 담긴 js 스크립트 파일이 있어야 한다. 아래와 같이 작성하자. import http from 'k6/http'; import { SharedArray } from 'k6/data'; import { htmlReport } from "https://raw.githubusercontent.com/benc-uk/k6-reporter/main/dist/bundle.js"; import { textSummary } from "https://jslib.k6.io/k6-summary/0.0.1/index.js"; export funct.. 2023. 12. 29.
bitbucket unauthorized bitbucket에 저장된 저장소로부터 프로젝트를 pull 받은 후 push를 하려고 하니 unauthorized 에러가 발생했다. (아... 요새 자꾸 안되는 것만 포스팅을 하는.....) stack overflow에 다음과 같이 설명이 되어 있었다. Use access keys to gain read-only access to this repository. Learn more about using SSH keys. 즉 프로젝트에 ssh 공개키만 등록이 되어 있는 상태라면 프로젝트 read-only 밖에 되지 않는다는 것이었다. 아... 언제 바꼈지.. 저장소 설정에 등록하는 ssh 키는 삭제하고 사용자 설정 화면에서 ssh 키를 추가로 등록 하자. Personal Bitbucket settings를 .. 2023. 12. 16.