2016-09-15 3 views
-1

실행중인 경우 메모리가 누출되는 실시간 응용 프로그램 RTMP 기반 스트리밍 응용 프로그램이 있습니다. 이 라이브 응용 프로그램이기 때문에 불행하게도 내가 Valgrind의를 통해 실행할 수 없습니다Linux에서 메모리 누수를 추적 할 수 없습니다.

다음

1. 응용 프로그램 PID 메모리가 몇 시간 후 3.8 %로 일정하게 유지 문제입니다 slabtop를 통해 2. 커널 메모리에서 일정 3. 남아 meminfo, 사용 가능한 메모리가 계속 줄어들고 있습니다!

누가이 메모리를 차지하고 있는지 어떻게 알 수 있습니까? 나는 TCP 버퍼 같은 것을 의심하고있다. 누군가가 도와 줄 수 있습니까?

+0

의 원인이해야하는 이유, 그것은 사용되는 메모리 – user6835267

+1

과 일치하지 않도록 당신을 수있는 것은 아닙니다 확실히 그것은 [linux disk cache] (http://www.linuxatemyram.com/)가 아닙니다. –

+0

memingo의 * all * 값을보십시오. 시간이 지남에 따라 플롯하고 어떤 일이 발생하는지 확인하십시오. –

답변

0

제공되는 정보만으로 누출 위치를 말하기 란 불가능합니다.

Valgrind를 사용할 수 없다면, 내가 제안하는 것은 프로그램의 다양한 기능/모듈을 격리하려고 시도한다는 것입니다. 그런 다음 해당 모듈을 사용/사용 중지 할 때 누수가 있는지 확인하기 위해 해당 모듈을 사용 불가능하게 설정하십시오.

예를 들어 응용 프로그램의 네트워킹 모듈을 해제하여 누수 여부를 확인하십시오. 이 방법을 사용하면 전체 응용 프로그램이 아닌 하나 또는 여러 모듈로 문제를 좁힐 수 있습니다.

0

나는 근본 원인을 발견했습니다. Linux에서 tcp 메모리를 32MB로 설정하면 문제가 발생했습니다. 를 CentOS에서 기본값 인 87킬로바이트에 다시 7.2

높은 값으로 설정하면 문제 내가 상단 %의 MEM을 추가

관련 문제