Iseries에서 개별 작업 메모리 소비를 결정할 수있는 방법이 있습니까?

StackOverflow https://stackoverflow.com/questions/446893

문제

우리는 ODBC를 통해 연결되는 .NET 앱을 혼합하고 DB2를 V5R4에있는 ISERIES LPAR에 연결합니다. 또한 기계에서 기본적으로 실행되는 배치 작업이 있습니다 (Cobol, RPG 및 직선 CL). 하루 중 특정 기간 동안, 우리는 높은 페이지 결함을 경험하고 문제를 일으킬 수있는 앱을 결정하려고합니다.

시장에서 수십 개의 고가의 도구를 구매하지 않고 (IEDoctor), 각 작업에서 소비되는 메모리의 양을 볼 수있는 방법이 있습니까? 대부분의 작업은 풀 2에서 떨어지고 있으며 수영장에 메모리를 추가하고 단순히 wrksyssts를 보는 것은 큰 도움이되지 않습니다. 문제 작업을 분리하고 성능을 향상시키고 불필요한 메모리 활용을 줄이기 위해 일부 수정을 할 수 있는지 확인하고 싶습니다.

도움이 되었습니까?

해결책

Java 나 JVM을 신경 쓰지 않거나 약간의 코딩을하고 있다면 ...

다음을 받으십시오 (Windows, Linux, AIX, Solaris 등에서 모두 사용 가능 ... Mac?) :

Jtopen은 당신이 사용할 수 있도록 평범한 오래된 Java 라이브러리 일뿐입니다. 모든 JVM 언어 그것은 일반적인 Java 라이브러리에 액세스 할 수 있습니다. 나는 그루비를 사용하고 있습니다. 걱정하지 마세요, 그루비는 멋지다.

여기에 간다.

 import com.ibm.as400.access.*

 // how many seconds to run  
 secs = 20 

 sys = new AS400("theserver", "paulg", "dotnet4evah")   
 job = new Job(sys, "jobname", "jobusername", "jobnumber")

 job.load()
 println "Stats for ${job.toString()}"  
 // this might look horrible
 println "total CPU time\tpage faults/sec\tdisk IO ops/sec"
 while (secs--) {
   job.loadStatistics()
   print "${job.getCPUUsed()/1000}\t\t" 
   print "${job.getValue(Job.ELAPSED_PAGE_FAULTS)}\t\t"
   println "${job.getValue(Job.ELAPSED_DISK_IO)}"
   job.resetStatistics()
   Thread.sleep(1000)
 }

 sys.disconnectAllServices()

그게 다야. 다른 많은 작업 가치가 있습니다 플레이. 나는 이러한 직무 통계를 귀찮게 할 필요가 없었기 때문에 통계를 재설정하는 것이 옳은지 모르겠습니다.

작업 대상을 만들기 위해 작업에 대한 작업 번호 및 기타 세부 사항을 실제로 아는 것은 고통입니다. 그것이 이유입니다 실천 너무 멋져요. 당신은 또한 수 CL 명령을 실행하십시오 유용한 경우 스크립트에서.

IBM 은이 라이브러리를 사용하여 OPS Navigator를 구축하므로 이미 한동안 사용했을 수도 있습니다.

다른 팁

이것은 조금 도움이되는 것 같습니다.

-Iseries Navigator에서 연결> 연결> 작업 관리> 메모리 풀> 활성 풀 또는 공유 풀을 확장하십시오. -사용하려는 메모리 풀을 마우스 오른쪽 단추로 클릭하고 작업을 클릭하십시오. - 페이지 결함 열을 포함하도록보기를 사용자 정의하십시오

적어도 나는 어떤 직업이 결함 문제를 겪고 있는지 알 수 있습니다. 다음에 문제가 발생하면 문제가되는 앱을 찾는 데 도움이되는지 확인합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top