log 2021-12-14
study
msa
따라하던 중, k8s depl config에서 리소스 리밋을 설정하라고 해서 기본? 자동완성으로 리소스 제한을 두었는데, 아래와 같았다.
...
resources:
limits:
memory: "128Mi"
cpu: "500m"
그런데, 서비스가 실행되지 않고 Killed
가 뜨면서 죽는 현상이 발생했다. 리소스 제한을 해제하고 다시 실행해보니 되어서, 메모리와 cpu를 늘려가며 실행했고, 메모리를 256Mi
로 늘리니 실행이 되었다.
rust
에러 핸들링도 예술 그 자체인듯.
if 문도 필요 없다. match나 switch도 필요 없다. ?
면 충분하다..
다만, 함수 표현에서 에러 종류를 나타내게 되는데, 더 복잡하고 다양한 종류의 에러가 날 수 있는 상황에서는 어떻게 할 지 모르겠다.
그냥 Result<String, Err>
로 선언해서 하려나.
아래 코드와,
...
let qty = item_quantity.parse::<i32>();
match qty {
Ok(val) => Ok(val * cost_per_item + processing_fee),
Err(val) => Err(val),
}
...
아래 코드가,
...
let qty = item_quantity.parse::<i32>()?;
Ok(qty * cost_per_item + processing_fee)
...
같은 기능을 한다!
main 함수 자체도 Result<(), Err>
형을 반환하게 선언하고, 끝 부분에서 Ok(())
를 리턴하도록 하여 ?
를 사용하거나,
if let
등으로 분기 처리를 할 수도 있다.
Box<dyn Error>
가 any 타입의 에러를 나타낸다. 어떻게 그런건지 아직 잘 모르겠다.
Comments