调整XenMobile操作
XenMobile操作的性能和稳定性涉及XenMobile中的多个设置,并取决于您的Citrix ADC和SQL Server数据库配置。本文重点介绍管理员最常配置且与XenMobile的调整和优化相关的设置。Citrix建议在部署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.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
- 说明:db与SQL的连接数
hibernate.c3p0.min_size
此自定义键确定XenMobile打开的与SQL Server数据库的最小连接数。按如下所示配置键。默认值为One hundred.。
- 键:hibernate.c3p0.min_size
- 值:One hundred.
- 显示名称:hibernate.c3p0.min_size
- 说明:db与SQL的连接数
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连接池大小
当您有100多台设备时,APNs连接池太小可能会对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读取超时
其他服务器优化
服务器属性 | 默认设置 | 为什么更改此设置? |
后台部署 | 1440 分钟 | 后台策略部署的频率(分钟)。仅适用于Android设备的始终启用连接。提高策略部署的频率可降低服务器负载。建议的设置为1440(24 小时)。 |
后台硬件清单 | 1440 分钟 | 后台硬件清单的频率(分钟)。仅适用于Android设备的始终启用连接。提高硬件清单的频率可降低服务器负载。建议的设置为1440(24 小时)。 |
检查删除的Active Directory用户的时间间隔 | 15 分钟 | 活动目录的标准同步时间为15分钟。值为0将阻止XenMobile检查删除的Active Directory用户。建议的设置为15分钟。 |
MaxNumberOfWorker | 3. | 导入许多批量购买许可证时使用的线程数量。默认值为3.。如果需要进一步优化,可以增加线程的数量。但请注意,如果使用数量较大的线程,例如6个,批量购买导入会导致CPU使用率非常高。 |
如何查看SQL数据库中的死锁和删除历史数据
当您看到死锁时,请运行以下查询以查看死锁。然后,数据库管理员或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 >
删除上述三个表中的数据。
注意:
您可能看不到表中的历史数据。如果需要,请跳过为该特定表运行截断查询。
截断表dbo.EWDEPLOY_HISTO;截断表dbo.EWSESS;截断表dbo.EWAUDIT;<!——NeedCopy >
解锁因死锁而被阻止的选择查询。此步骤可处理更多死锁。
设置READ_COMMITTED_SNAPSHOT为立即回滚
默认情况下,对于保留会话保留和审核保留数据的数据库,数据库清理为七天一次,该时间对于许多用户而言较长。请将清理值更改为 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 >