Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
MobiLink 服务器主要通过以下方式使用内存:
高速缓存
对于 VM
存储系统数据
在典型的 MobiLink 服务器中,大多数内存由内存高速缓存使用,内存高速缓存存储行数据以及相关的数据结构和网络缓冲区。通常,大小和数量均无边界限制的数据存储在高速缓存中。如果要存储在内存高速缓存中的数据总量超出高速缓存的大小,则超出部分会传输到磁盘,这可能成为同步性能的潜在瓶颈。交换到磁盘的量取决于磁盘 I/O 的数量和频率以及磁盘速率。为了消除该潜在瓶颈问题,建议不要将数据完全交换到磁盘。请注意 MobiLink 服务器日志中的警告 10082,或 SQL Anywhere 监控器中的 "高速缓存已满" 通知。
缺省情况下,MobiLink 服务器会自动将其高速缓存增加到可用进程地址空间的 60%,并在系统中其它进程需要更多内存或服务器的非高速缓存内存逐渐增大时缩减其高速缓存。可用 -cinit、-cmax 和 -cmin mlsrv12 服务器选项控制初始的高速缓存最大值和最小值。如果需要,服务器可为 -cmax 和 -cmin 选项指定相同的值以禁用动态高速缓存大小调整。
请参见:
可通过多种方式查找高速缓存的信息:
服务器高速缓存大小 这是一个用来表明当前高速缓存大小的 SQL Anywhere 监控器度量。请参见度量列表。
已锁定页的百分比 这是一个用来表明高速缓存中不能传输到磁盘的页面百分比的 SQL Anywhere 监控器度量。请参见度量列表。
已使用页的百分比 这是一个用来表明包含有效数据的页面百分比的 SQL Anywhere 监控器度量。请参见度量列表。
PAGES_LOCKED_MAX mlsrv12 的 -ppv 选项可以输出内存高速缓存中的页面数量。请参见-ppv mlsrv12 选项。
PAGES_LOCKED mlsrv12 的 -ppv 选项可以输出已加载到内存的高速缓存页面数量。请参见-ppv mlsrv12 选项。
PAGES_USED mlsrv12 的 -ppv 选项可以输出已使用的高速缓存页面数量。请参见-ppv mlsrv12 选项。
mlsrv12 的 -vk 选项 导致服务器在高速缓存增长或缩减时向日志输出一行内容。请参见-v mlsrv12 选项。
内存在 MobiLink 服务器中的另一主要用途是嵌入式 Java 和 .NET VM。在大量使用直接行 API 或嵌入 JBoss 和 Tomcat 等应用程序服务器的部署中,VM 内存使用可以超出内存高速缓存。
使用 Java VM 时,通常可以控制 VM 使用的内存量。多数 Java VM 提供 -Xms 和 -Xmx 开关,允许您分别指定 VM 堆大小的最大值和初始值。
可以通过 [VM 内存使用] SQL Anywhere 监控器度量或 [VM_MEM_USE] -ppv 值,找到嵌入式 VM 使用的内存量。
其余内存用于存储关于每个同步、线程堆栈、线程间通信和 ODBC 驱动程序的状态信息。通常,这会用去几十兆字节的内存,而使用的总量由 mlsrv12 的 -nc、-sm 和 -w 选项界定。值得注意的是:非 SQL Anywhere ODBC 驱动程序会使用大量内存,尤其是在处理 BLOB 列时。