EzyMailHostingAdministration

Zimbra JVM issue with OpenVZ

ถ้าหากใช้ Zimbra บน OpenVZ อาจเกิดปัญหา start zimbra service ไม่ขึ้น ลักษณะคล้าย error ด้านล่าง


Notification skipped
Starting servers...Could not create the Java virtual machine.
Unable to determine enabled services from ldap.
Enabled services read from cache. Service list may be inaccurate.
sh: zmcontrol.status.zMdWQ: Permission denied
sh: zmcontrol.status.zMdWQ: Permission denied
sh: zmcontrol.status.zMdWQ: Permission denied
sh: zmcontrol.status.zMdWQ: Permission denied
sh: zmcontrol.status.zMdWQ: Permission denied
sh: zmcontrol.status.zMdWQ: Permission denied
done.
Setting up zimbra crontab...done.

ปัญหานี้โดยส่วนใหญ่แล้วเกิดจากเราได้ assign จำนวน memory ไม่พอต่อการใช้งาน วิธีแก้ไขคือเพิ่ม memory ให้กับ container นั้นๆ จนกว่าจะสามารถใช้งานได้ ให้รันคำสั่งด้านล่างเพื่อเพิ่ม memory ให้กับ container ดังนี้

[root@Ezymailhosting ~]# vzctl set CID --vmguarpages XG --save
[root@Ezymailhosting ~]# vzctl set CID --privvmpages XG:YG  --save

โดยที่ CID คือ Container ID X คือ จำนวน Memory ที่ assign ให้ใหม่ Y คือ จำนวน Memory ที่สามารถ brust วิธีการตรวจสอบว่าเราได้เพิ่มให้เพียงพอหรือยัง สามารถใช้คำสั่ง

[root@Ezymailhosting ~]# vzctl exec CID cat /proc/user_beancounters
Version: 2.5
    uid  resource              held      maxheld        failcnt
    CID: kmemsize          11266888     14778368             6
         lockedpages              0            0             0
         privvmpages         290231       524167          3958
         shmpages               129          129             0
         dummy                    0            0  ...        0
         numproc                 74          123             0
         physpages           484125       537642             0
         vmguarpages              0            0             0
         oomguarpages        104950       106891             0
         numtcpsock              17           32             0
         numflock                 7           15             0
         numpty                   1            2             0
         numsiginfo               0           24             0
         tcpsndbuf           209280       257632  ...        0
         tcprcvbuf           212992      1869520            81
         othersockbuf        158240       188016             0
         dgramrcvbuf              0         8720             0
         numothersock           156          174             0
         dcachesize         1846788      3624960             0
         numfile                906         1325             0
         dummy                    0            0  ...        0
         dummy                    0            0             0
         dummy                    0            0             0
         numiptent               20           20             0

ให้ดู column สุดท้ายที่ชื่อ “failcnt” จะต้องให้มีค่าเป็น 0 ทั้งหมด เพราะถ้าไม่ได้เป็นแสดงว่ามีปัญหาเกี่ยวกับการ allocate memory จึงทำให้เกิดการทำงานผิดพลาดได้ที่ Container นั้นๆ หากยังไม่สามารถแก้ไขได้ ลองใส่ค่าด้านล่างลงไปในไฟล์ /opt/zimbra/conf/localconfig.xml แต่อาจจะแก้สามารถแก้ปัญหาได้บ้างบางกรณีและค่าทั้งหมดนี้ไม่แนะนำให้ใช้งานจริง ควรเอาไว้ใช้กับเครื่องทดสอบเท่านั้น

<key name="zimbra_zmjava_options">
     <value>-Xms128m -Xmx128m</value>
</key>
EOF.← กลับไปอ่านบทความอื่น