Product Documentation

调整 XenMobile 操作

XenMobile 操作的性能和稳定性涉及 XenMobile 中的多个设置,并取决于您的 NetScaler 和 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
  • 值:30
  • 显示名称: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 数据库的最小连接数。按如下所示配置键。默认值为 100

  • 键:hibernate.c3p0.min_size
  • 值:100
  • 显示名称: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 活动性能产生负面影响。性能问题包括降低向设备部署应用程序和策略的速度以及设备注册速度。建议的设置为 10 或您的地理位置的最大 APNs 服务器数。默认值为 10

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 分钟 Active Directory 的标准同步时间为 15 分钟。值为 0 将阻止 XenMobile 检查删除的 Active Directory 用户。建议的设置为 15 分钟。
MaxNumberOfWorker 3 导入许多 VPP 许可证时使用的线程数量。默认值为 3。如果需要进一步优化,可以增加线程的数量。但请注意,如果使用大量线程,例如 6 个,VPP 导入会导致 CPU 使用率较高。

为 Android 设备优化部署计划

您可以使用 Google Firebase Cloud Messaging(FCM,以前名为 Google Cloud Messaging)为 Android 设备计划部署。

为 XenMobile 环境启用 FCM 后,将会向 Android 设备近乎实时地发送通知,类似于 iOS 设备的 APNs。配置了 FCM 时,当 XenMobile 需要连接到设备以进行策略更新、选择性擦除等时,XenMobile Server 将向 FCM 服务器发送通知消息以将请求转发到客户端设备。设备收到来自 FCM 的通知后,将连接回 XenMobile 以接收进一步指示。请谨记,此方法依赖于第三方服务器 (Google),因此会受到不在您的 IT 部门或 Citrix 支持控制范围内的服务中断的影响。

有关如何在 FCM 服务中注册的信息,请参阅 XenMobile 和 Firebase Cloud Messaging (FCM) 配置

如果对 Android 使用 FCM,应了解以下 XenMobile Server 属性。属性仍使用以前的 Google Cloud Messaging 缩写 GCM。

  • GCM API 密钥: 在 Google Developers Console 中创建的密钥。
  • GCM 发件人 ID: Google Developers Console 中的项目编号。
  • GCM 注册 ID TTL: 续订设备 FCM 注册 ID 之前的延迟时间(天)。默认值为 10
  • GCM 检测信号时间间隔: 默认值为 6 小时。

如何查看 SQL 数据库中的死锁和删除历史数据

当您看到死锁时,请运行以下查询以查看死锁。然后,数据库管理员或 Microsoft SQL 团队可以确认该信息。

SQL 查询

SELECT

db.name DB_Service,

tl.request_session_id,

wt.blocking_session_id,

OBJECT_NAME(p.OBJECT_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.databases db ON db.database_id = tl.resource_database_id

INNER JOIN sys.dm_os_waiting_tasks AS wt ON tl.lock_owner_address = wt.resource_address

INNER JOIN sys.partitions AS p ON p.hobt_id = tl.resource_associated_entity_id

INNER JOIN sys.dm_exec_connections ec1 ON ec1.session_id = tl.request_session_id

INNER JOIN sys.dm_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

清理数据库

重要:

请先备份您的数据库,然后再对表格进行更改。

  1. 请运行以下查询以查看历史数据。

    select COUNT(\*) as total_record from dbo.EWDEPLOY_HISTO;
    select COUNT(\*) as total_record from dbo.EWSESS;
    select COUNT(*) as total_record from dbo.EWAUDIT;
    
  2. 删除上述三个表中的数据。

    注意:

    您可能看不到表中的历史数据。如果需要,请跳过为该特定表运行截断查询。

    truncate TABLE dbo.EWDEPLOY_HISTO;
    truncate TABLE dbo.EWSESS;
    truncate TABLE dbo.EWAUDIT;
    
  3. 解锁因死锁而被阻止的 SELECT 查询。此步骤可处理更多死锁。

    ALTER DATABASE <database_name> SET       READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE
    
  4. 默认情况下,对于保留会话保留和审核保留数据的数据库,数据库清理为七天一次,该时间对于许多用户而言较长。请将清理值更改为 1 天或 2 天。在服务器属性中,进行以下更改:

    zdm.dbcleanup.sessionRetentionTimeInDays = 1 day
    zdm.dbcleanup.deployHistRetentionTimeInDays = 1 day
    zdm.dbcleanup.auditRetentionTimeInDays=1 day