XenMobile® 작업 튜닝
XenMobile 작업의 성능과 안정성은 XenMobile의 여러 설정과 Citrix ADC 및 SQL Server 데이터베이스 구성에 따라 달라집니다. 이 문서에서는 관리자가 XenMobile 튜닝 및 최적화와 관련하여 가장 자주 구성하는 설정에 중점을 둡니다. Citrix는 XenMobile을 배포하기 전에 이 문서의 각 설정을 평가할 것을 권장합니다.
중요:
이 지침은 XenMobile Server CPU 및 RAM이 장치 수에 적합하다고 가정합니다. 확장성에 대한 자세한 내용은 확장성 및 성능을 참조하십시오.
다음 서버 속성은 전체 XenMobile 인스턴스에서 작업, 사용자 및 장치에 전역적으로 적용됩니다. 일부 서버 속성을 변경하려면 각 XenMobile Server 노드를 다시 시작해야 합니다. 다시 시작이 필요한 경우 XenMobile에서 알려줍니다.
이러한 튜닝 지침은 클러스터링된 환경과 비클러스터링된 환경 모두에 적용됩니다.
hibernate.c3p0.idle_test_period
이 XenMobile Server 속성(사용자 지정 키)은 연결이 자동으로 유효성 검사되기 전의 유휴 시간을 초 단위로 결정합니다. 키는 다음과 같이 구성합니다. 기본값은 30입니다.
- 키: 사용자 지정 키
- 키: hibernate.c3p0. idle_test_period
- 값: 120
- 표시 이름: hibernate.c3p0. idle_test_period
- 설명: Hibernate 유휴 테스트 기간
hibernate.c3p0.max_size
이 사용자 지정 키는 XenMobile이 SQL Server 데이터베이스에 열 수 있는 최대 연결 수를 결정합니다. XenMobile은 이 사용자 지정 키에 지정한 값을 상한으로 사용합니다. 연결은 필요한 경우에만 열립니다. 데이터베이스 서버의 용량에 따라 설정을 지정하십시오.
클러스터링된 구성에서 다음 방정식을 참고하십시오. c3p0 연결 수에 노드 수를 곱한 값이 XenMobile이 SQL Server 데이터베이스에 열 수 있는 실제 최대 연결 수와 같습니다.
클러스터링된 구성과 비클러스터링된 구성 모두에서, SQL Server의 크기가 부족한 상태에서 값을 너무 높게 설정하면 피크 로드 시 SQL 측에서 리소스 문제가 발생할 수 있습니다. 값을 너무 낮게 설정하면 사용 가능한 SQL 리소스를 활용하지 못할 수 있습니다.
키는 다음과 같이 구성합니다. 기본값은 1000입니다.
- 키: hibernate.c3p0.max_size
- 값: 1000
- 표시 이름: hibernate.c3p0.max_size
- 설명: SQL에 대한 DB 연결
hibernate.c3p0.min_size
이 사용자 지정 키는 XenMobile이 SQL Server 데이터베이스에 여는 최소 연결 수를 결정합니다. 키는 다음과 같이 구성합니다. 기본값은 100입니다.
- 키: hibernate.c3p0.min_size
- 값: 100
- 표시 이름: hibernate.c3p0.min_size
- 설명: SQL에 대한 DB 연결
hibernate.c3p0.timeout
이 사용자 지정 키는 유휴 시간 제한을 결정합니다. 데이터베이스 클러스터 장애 조치를 사용하는 경우 Citrix는 이 사용자 지정 키를 추가하고 유휴 시간 제한을 줄이도록 설정할 것을 권장합니다. 기본값은 120입니다.
- 키: 사용자 지정 키
- 키: hibernate.c3p0.timeout
- 값: 120
- 표시 이름: hibernate.c3p0.timeout
- 설명: 데이터베이스 유휴 시간 제한
푸시 서비스 하트비트 간격
이 설정은 iOS 장치가 APNs 알림이 중간에 전달되지 않았는지 확인하는 빈도를 결정합니다. APNs 하트비트 빈도를 늘리면 데이터베이스 통신을 최적화할 수 있습니다. 값이 너무 크면 불필요한 로드가 추가될 수 있습니다. 이 설정은 iOS에만 적용됩니다. 기본값은 20시간입니다.
환경에 iOS 장치가 많은 경우 하트비트 간격으로 인해 필요 이상으로 높은 로드가 발생할 수 있습니다. 선택적 초기화, 잠금, 전체 초기화와 같은 보안 작업은 이 하트비트에 의존하지 않습니다. 이러한 작업이 실행될 때 APNs 알림이 장치로 전송되기 때문입니다.
이 값은 Active Directory 그룹 멤버십 변경 후 정책 업데이트가 얼마나 빨리 이루어지는지를 제어합니다. 따라서 로드를 줄이기 위해 이 값을 12시간에서 20시간 사이로 늘리는 것이 적절한 경우가 많습니다.
iOS MDM APNS 연결 풀 크기
APNs 연결 풀이 너무 작으면 100개 이상의 장치가 있을 때 APNs 활동 성능에 부정적인 영향을 미칠 수 있습니다. 성능 문제에는 장치에 앱 및 정책 배포 속도 저하, 장치 등록 속도 저하 등이 포함됩니다. 기본값은 1입니다. 약 400개 장치당 1씩 이 값을 늘릴 것을 권장합니다.
auth.ldap.connect.timeout
느린 LDAP 응답을 보완하기 위해 Citrix는 다음 사용자 지정 키에 대한 서버 속성을 추가할 것을 권장합니다.
- 키: 사용자 지정 키
- 키: auth.ldap.connect.timeout
- 값: 60000
- 표시 이름: auth.ldap.connect.timeout
- 설명: LDAP 연결 시간 제한
auth.ldap.read.timeout
느린 LDAP 응답을 보완하기 위해 Citrix는 다음 사용자 지정 키에 대한 서버 속성을 추가할 것을 권장합니다.
- 키: 사용자 지정 키
- 키: auth.ldap.read.timeout
- 값: 60000
- 표시 이름: auth.ldap.read.timeout
- 설명: LDAP 읽기 시간 제한
기타 서버 최적화
| 서버 속성 | 기본 설정 | 이 설정을 변경해야 하는 이유 |
|---|---|---|
| 백그라운드 배포 | 1,440분 | 백그라운드 정책 배포 빈도(분). Android 장치의 항상 켜져 있는 연결에만 적용됩니다. 정책 배포 빈도를 늘리면 서버 로드가 줄어듭니다. 권장 설정은 1440(24시간)입니다. — |
and the KEYSTORE table. When you delete or re-enroll devices, the certificates in the ENROLLMENT_CERTIFICATE table get deleted. Entries in the KEYSTORE table remain, which can cause performance issues. Perform the following procedure to clean the orphans from the KEYSTORE table.
Important:
Back up your database before you make changes to the tables.
-
Run the following query to check the historical data.
select COUNT(*) from KEYSTORE <!--NeedCopy--> -
Check for orphans in the
KEYSTOREtable with the following query.WITH cte(KEYSTORE_ID) AS (SELECT KEYSTORE_ID FROM ENROLLMENT_CERTIFICATE UNION SELECT CA_KEYSTORE_ID FROM LDAP_CONFIG UNION SELECT CLIENT_KEYSTORE_ID FROM LDAP_CONFIG UNION SELECT KEYSTORE_ID FROM SAML_SERVICE_PROVIDER UNION SELECT KEYSTORE_ID FROM SERVER_CERTIFICATE) SELECT keystore.id FROM keystore LEFT JOIN cte ON keystore.id = cte.KEYSTORE_ID WHERE KEYSTORE_ID IS NULL; <!--NeedCopy--> -
Clear the orphans using the following query.
WITH cte(KEYSTORE_ID) AS (SELECT KEYSTORE_ID FROM ENROLLMENT_CERTIFICATE UNION SELECT CA_KEYSTORE_ID FROM LDAP_CONFIG UNION SELECT CLIENT_KEYSTORE_ID FROM LDAP_CONFIG UNION SELECT KEYSTORE_ID FROM SAML_SERVICE_PROVIDER UNION SELECT KEYSTORE_ID FROM SERVER_CERTIFICATE) DELETE FROM keystore WHERE id IN ( SELECT keystore.id FROM keystore LEFT JOIN cte ON keystore.id = cte.KEYSTORE_ID WHERE KEYSTORE_ID IS NULL AND keystore.TYPE = 'X_509' ); <!--NeedCopy--> -
Add an index to the
KEYSTOREtable to improve search efficiency.DROP INDEX "KEYSTORE_NAME_IDX" ON "KEYSTORE"; ALTER TABLE "KEYSTORE" ALTER COLUMN "NAME" NVARCHAR(255) NULL; CREATE INDEX "KEYSTORE_NAME_IDX" ON "KEYSTORE"("NAME") INCLUDE ("ID", "TYPE", "CONTENT", "PASSWORD", "PUBLICLY_TRUSTED", "DESCRIPTION", "ALIAS", "MODIFICATION_DATE"); <!--NeedCopy-->