XenMobile작업조정
XenMobile작업의성능및안정성은XenMobile의많은설정과관련되며Citrix ADC및SQL Server데이터베이스구성에따라달라집니다。이문서에서는XenMobile의조정및최적화와관련하여관리자가가장자주구성하는설정을중점적으로설명합니다。XenMobile을배포하기전에이문서의각설정을평가하는것이좋습니다。
중요:
다음지침은XenMobile서버CPU및RAM이장치수에적합하다고가정합니다。확장성에대한자세한내용은확장성및성능을참조하십시오。
다음서버속성은전체XenMobile인스턴스의작업,사용자및장치에글로벌로적용됩니다。일부서버속성을변경하려면각XenMobile서버노드를다시시작해야합니다。다시시작이필요한경우XenMobile이알림을제공합니다。
다음조정지침은클러스터된환경과클러스터되지않은환경에모두적용됩니다。
hibernate.c3p0.idle_test_period
XenMobile服务器속성인사용자지정키는연결유효성이자동으로검사되기까지의유휴시간(초)을결정합니다。다음과같이키를구성합니다。기본값은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데이터베이스에대해여는최소연결수를결정합니다。다음과같이키를구성합니다。기본값은One hundred.입니다。
- 키:hibernate.c3p0.min_size
- 값:One hundred.
- 표시이름:hibernate.c3p0.min_size
- 설명:sql에대한db연결
hibernate.c3p0.timeout
이사용자지정키는유휴시간초과를결정합니다。데이터베이스클러스터장애조치(故障转移)를사용하는경우이사용자지정키를추가하고,유휴시간초과를낮추도록설정하는것이좋습니다。기본값은120입니다。
- 키:사용자지정키
- 키:hibernate.c3p0.timeout
- 값:120
- 표시이름:hibernate.c3p0.timeout
- 설명:데이터베이스유휴시간초과
푸시서비스하트비트간격
이설정은iOS장치에서중간에apn알림이전송되지않았는지를확인하는빈도를결정합니다。APNs하트비트빈도를늘리면데이터베이스통신을최적화할수있습니다。값이너무크면불필요한부하가추가될수있습니다。이설정은iOS에만적용됩니다。기본값은20.시간입니다。
환경에iOS장치가많은경우하트비트간격으로인해필요이상의부하가발생할수있습니다。선택적초기화,잠금및전체초기화같은보안동작은이하트비트를사용하지않습니다。이러한동작이실행될때는APNs알림이장치로전송되기때문입니다。Active Directory이값은그룹구성원자격이변경된후정책을업데이트하는속도를제어합니다。그러므로부하를줄이려면이값을12~20시간사이의값으로늘리는것이적절합니다。
iOS MDM APNS연결풀크기
100대장치수가이상인경우apn연결풀이너무작으면apn작업성능에부정적인영향을미칠수있습니다。앱및정책이장치에느리게배포되고장치등록이느려지는등의성능문제가발생할수있습니다。기본값은1입니다。약400개의장치마다이값을1씩늘리는것이좋습니다。
auth.ldap.connect.timeout
느린LDAP응답을보완하려면다음사용자지정키의서버속성을추가하는것이좋습니다。
- 키:사용자지정키
- 키:auth.ldap.connect.timeout
- 값:60000
- 표시이름:auth.ldap.connect.timeout
- 설명:Ldap연결시간초과
auth.ldap.read.timeout
느린LDAP응답을보완하려면다음사용자지정키의서버속성을추가하는것이좋습니다。
- 키:사용자지정키
- 키:auth.ldap.read.timeout
- 값:60000
- 표시이름:auth.ldap.read.timeout
- 설명:Ldap읽기시간제한
기타서버최적화
서버 속성 | 기본 설정 | 이설정을변경하는이유 |
백그라운드배포 | 1440年분 | 백그라운드정책배포의빈도(분)입니다。Android장치의상시연결에만적용됩니다。정책배포빈도를늘리면서버부하가감소합니다。권장되는설정은1440(24시간)입니다。 |
백그라운드하드웨어인벤토리 | 1440年분 | 백그라운드하드웨어인벤토리의빈도(분)입니다。Android장치의상시연결에만적용됩니다。하드웨어인벤토리빈도를늘리면서버부하가감소합니다。권장되는설정은1440(24시간)입니다。 |
삭제된Active Directory사용자를확인하는간격 | 15분 | 活动目录의표준동기화시간은15분입니다。값이0인경우XenMobile이삭제된Active Directory사용자를확인하지않습니다。권장되는설정은15분입니다。 |
MaxNumberOfWorker | 3. | 많은수의볼륨구매라이센스를가져올때사용되는스레드수입니다。기본값은3.입니다。추가최적화가필요한경우스레드수를늘릴수있습니다。그러나예를들어6과같이스레드수가커지면볼륨구매를가져올때CPU사용량이높아진다는점에유의하십시오。 |
SQL db에서교착상태를확인하고기록데이터를삭제하는방법
교착상태가발견되면다음쿼리를실행하여교착상태를확인하십시오。그런다음데이터베이스관리자또는Microsoft SQL팀을통해정보를확인할수있습니다。
SQL쿼리
SELECT db.name DB_Service, tl.request_session_id, wt.blocking_session_id, OBJECT_NAME(p.p eobject_id) BlockedObjectName, tl.resource_type, h1。TEXT AS RequestingText, h2。TEXT AS BlockingTest, tl.request_mode FROM sys.;dm_tran_locks AS tl INNER JOIN sys。database db ON db。resource_database_id = tl.resource_database_id INNER JOIN sys. resource_database_iddm_os_waiting_tasks AS wt ON tl.lock_owner_address = wt.resource_address INNER JOIN sys. dm_os_waiting_tasks AS wt ON tl.lock_owner_address = wt.resource_address INNER JOINp.hobt_id = tl.resource_associated_entity_id INNER JOIN sys. partitions AS p ON p.hobt_id = tl.resource_associated_entity_id INNER JOIN sys. partitionsdm_exec_connections ec1 ON ec1。session_id = tl.request_session_id INNER JOIN sys. session_iddm_exec_connections ec2 ON ec2。session_id = wt.blocking_session_id CROSS APPLY sys.dm_exec_sql_text(ec1.most_recent_sql_handle) AS h1 CROSS APPLY sys.dm_exec_sql_text(ec2.most_recent_sql_handle) AS h2 GO
데이터베이스정리
중요:
테이블을변경하기전에데이터베이스를백업합니다。
다음쿼리를실행하여기록데이터를확인합니다。
从dbo.EWDEPLOY_HISTO中选择COUNT(\*)作为total_record;从dbo.EWSESS中选择COUNT(\*)作为total_record从dbo.EWAUDIT中选择COUNT(*)作为total_record;<!——NeedCopy >
이전의3개테이블에서데이터를삭제합니다。
참고:
기록데이터가테이블에표시되지않을수있습니다。이경우실행을건너뛰고특정테이블에대한쿼리를잘라냅니다。
截断表dbo.EWDEPLOY_HISTO;截断表dbo.EWSESS;截断表dbo.EWAUDIT;<!——NeedCopy >
교착상태로인해차단되었던选择쿼리를차단해제합니다。이단계에서추가교착상태가처리됩니다。
设置READ_COMMITTED_SNAPSHOT为立即回滚
기본적으로데이터베이스정리는세션보존및감사보존데이터유지를위해7일로설정되며사용자가많은경우값이증가합니다。정리값을1일또는2일로변경합니다。서버속성에서다음변경을수행합니다。
zdm.dbcleanup. sessionretentiontimeindays = 1天zdm.dbcleanup. deployhistretentiontimeindays = 1天auditRetentionTimeInDays < = 1天!——NeedCopy >
Keystore테이블에서분리된항목정리
XenMobile노드의성능이좋지않으면KEYSTORE테이블이너무크지않은지확인합니다。XenMobile은등록인증서를ENROLLMENT_CERTIFICATE및KEYSTORE테이블에저장합니다。장치를삭제하거나재등록하면ENROLLMENT_CERTIFICATE테이블의인증서가삭제됩니다。KEYSTORE테이블의항목은그대로유지되며,이로인해성능문제가발생할수있습니다。Keystore테이블에서분리된항목을정리하려면다음절차를수행하십시오。
중요:
테이블을변경하기전에데이터베이스를백업합니다。
다음쿼리를실행하여기록데이터를확인합니다。
select COUNT(*) from KEYSTORE
다음쿼리를사용하여keystore테이블에서분리된항목이있는지확인합니다。
使用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)选择keystore。在密钥存储库上左加入cte。id = cte。Keystore_id为空;<!——NeedCopy >
다음쿼리를사용하여분리된항목을지웁니다。
与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)删除keystore中id所在的值(SELECT keystore)。在密钥存储库上左加入cte。id = cte。其中KEYSTORE_ID是空的和密钥存储库。Type = ' x_509 ');<!——NeedCopy >
Keystore테이블에인덱스를추가하여검색효율성을높입니다。
删除密钥库索引“keystore_name_idx”Alter column name nvarchar (255) null创建索引“keystore_name_idx”对“密钥库”(“名称”)包括(“id”,“类型”,“内容”,“密码”,“publicly_trusted”,“描述”,“别名”,“modification_date”);<!——NeedCopy >