데이터베이스 레이어에 대한 성능 모니터링 도구
ThingWorx와 함께 배포될 수 있는 대부분의 엔터프라이즈급 데이터베이스 엔진은 뛰어난 모니터링 및 문제 감지 도구를 제공합니다. DBA 팀과 협력하여 솔루션측 모니터링과 함께 데이터베이스를 모니터링하고 분석합니다.
다음은 PostgreSQL 및 Microsoft SQL 데이터베이스에 대한 일부 권장 문제 감지 질의입니다. 이러한 데이터베이스는 ThingWorx 모델 데이터에 대해 가장 많이 사용되는 엔터프라이즈 데이터베이스입니다.
Postgres
PostgreSQL 서버에서 리소스 병목을 식별하기 위해 다음 메트릭을 모니터링합니다.
사용 가능한 디스크 공간
CPU 사용
I/O 사용
장기 실행 질의를 식별하고 최적화해야 합니다. 이러한 질의는 리소스를 다시 사용할 수 있을 때까지 다른 질의를 차단하고 대기 시간을 늘릴 수 있습니다. 이렇게 하면 ThingWorx에서 데이터베이스 잠금을 대기하는 동안 스레드가 오래 실행될 수 있습니다. 데이터베이스 잠금을 사용하면 개별 문이 행 또는 테이블의 현재 상태를 잠글 수 있습니다. 잠금이 너무 많으면 솔루션의 성능에 영향을 줍니다.
MSSQL
Microsoft SQL 데이터베이스의 경우 생산 환경에서 매일 밤에 데이터베이스 통계를 수집하는 것이 좋습니다. 또한 특히 데이터베이스가 SSD에서 실행되고 있지 않은 경우 높은 조각화에 대해 색인을 검토하고 필요에 따라 다시 작성해야 합니다. ThingWorx 데이터베이스의 긴 대기 또는 교착 상태 작업에 대해 MSSQL Extended Events 로그를 정기적으로 검토해야 합니다. 성능이 느린 기간 동안 다음 질의를 통해 리소스를 대기 중인 트랜잭션을 식별할 수 있습니다.
SELECT t.*,r.*, SUBSTRING(t.text, statement_start_offset/2 + 1,
(CASE WHEN statement_end_offset = -1
THEN LEN(CONVERT(nvarchar(max), t.text)) * 2
ELSE statement_end_offset
END - statement_start_offset) / 2)
FROM sys.dm_exec_requests AS r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS t
문이 일시 중단된 상태로 나타나거나 더 오랫동안 실행 중인 경우 wait_typewait_resource 열을 확인하여 대기 시간에 대한 이유를 식별합니다.
문이 임의의 잠금에 대해 대기 중인지 확인하려면 세션 ID를 식별하고 다음을 실행합니다.
select * from sys.dm_tran_locks where session_id = 158
도움이 되셨나요?