반복 테스트 ..
결국 .. php에 워커스레드 방식을 썼어요.
이번에 고치면서 XPHP_CWD 같은 설정을 appsettings.json으로 옮겼쩌. 이렇게 되어야 좋습니다.
{
"XPhp": {
"CWD": "/app/vhost/null",
"INI": "/app/config/php.ini",
"Worker": 128
}
}전에는 dockerfile에 환경 변수에서 값을 가져왔어요.
[1] nightmare/Nightmare/Dockerfile at 2023RC1 · nyakuz/nightmare · GitHub
워커스레드 .. 몬가가 이상하다 .. 어케 메모리를 57.65MB 사용 중이라고 하는지 모르겠어요. 망한 것 같네요.
ID NAME CPU % MEM USAGE / LIMIT MEM % NET IO BLOCK IO PIDS CPU TIME AVG CPU %
24b310901b4a t------op 13.56% 57.65MB / 480.7MB 11.99% 0B / 0B 214.6MB / 158.4MB 56 43.955722s 10.09%글을 쓰면서 계속 보았는데 더 줄었어요.
24b310901b4a t------op 2.59% 49.63MB / 480.7MB 10.32% 0B / 0B 216.3MB / 173.1MB 56 52.519207s 8.16%아무튼 워커스레드에 하찮은 스레드 대기 로직을 넣었고, 예시코드로 보면 이렇게 되빈다. 이럼 대기상태를 해제하는 시점에 스레드르 재개하여요. win32에서는 스레드 정지/시작을 걸 수 있지만 무거운 작업이고 범용 닷넷 버전부터는 기능이 빠졌쩌.
internal class Program {
static readonly SemaphoreSlim semaphore = new(1, 1);
static void Main(string[] args) {
Console.WriteLine("Hello, World!");
semaphore.Wait();
Execute();
Console.ReadLine();
while (true) {
semaphore.Release();
Console.ReadLine();
}
}
static async void Execute() {
while (true) {
await semaphore.WaitAsync();
Console.WriteLine("Execute {0}", Thread.CurrentThread.ManagedThreadId);
}
}
}데드락이 해결되었을 수도 있겠지만 측정은 해보아야 하여서 신규 소스 커밋은 이번에도 심하게 늦을 전망이어요.
