ข้ามไปที่เนื้อหาหลัก

Alfresco Share กับ Error Too many open files

หากใครใช้ Alfresco Share บางที่จะพบว่า หากกดลิงค์ต่างๆ เร็วๆ ไปสักพักจะเจอหน้า Error ซึ่งจาก Error ที่หน้าเว็บฟ้องจะไม่บ่งบอกว่าเกิดอะไรขึ้น เพราะตัวเว็บนั้นจะเรียก Web Script จาก Alfresco RESTful WebService อีกทีนึง สาเหตุที่แท้จริงของ Error นี้คือ ตัว lucene ซึ่งเป็น Engine ที่ทำการ Index file แม้ว่าตัว lucene 2.0 จะแก้ให้เกิดปัญหานี้น้อยลงแล้วก็ตาม แต่เราก็ยังพบปัญหาอยู่

วิธีแก้ไข
ให้เราไปเพิ่ม limit ของการเปิดไฟล์ให้มากขึ้น ตัวอย่างเช่นใน ubuntu ใช้คำสั่ง
ulimit -n
ด้วย user ที่รัน alfresco พบว่าค่าเริ่มต้นที่ระบบตั้งให้คือ 1024 ซึ่งไม่เพียงพอ ให้เราไปเพิ่มในไฟล์
/etc/security/limits.conf ดังนี้
<username> soft nofile 4096
<username> hard nofile 65536
สมมติว่าผมใช้ user เป็น seven ในการ login เข้า shell จึงเพิ่มเป็น
seven soft nofile 4096
seven hard nofile 65536
ให้ทำการ logout และ login อีกรอบแล้วพิมพ์คำสั่ง ulimit -n อีกครัง จะพบว่าค่าที่ตอบกลับมาคือ 4096 ตามที่เราตั้งไว้

เป็นอันว่าเรียบร้อยแล้วสำหรับการแก้ปัญหาที่ error ไม่ทราบสาเหตุจาก alfresco share

Tips
error นั้นจะปรากฏใน tomcat/logs/catalina.out เราจะไม่พบใน alfresco.log

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

Alfresco กับการ Search ภาษาไทย

เนื่องด้วยการ Search ถือเป็นหัวใจสำคัญของงาน ECM เลยก็ว่าได้ แต่ Alfresco ณ ปัจจุบันยังไม่รองรับการ Search ด้วยภาษาไทย แต่อย่างว่า Opensource เมื่อเรารู้ว่ามันใช้ Lucene เป็น engine ในการค้นหาเอกสาร เราก็เลยแงะไปยังตัว lucene เองพบว่ามีคนส่ง Patch ในการตัดคำไทย ไปให้กับ lucene เรียบร้อยแล้ว โดยคุณสัมพันธ์นั่นเอง วิธีการ Config ให้ Alfresco ตัดคำไทยได้ผมสรุปออกมาเป็นขั้นตอนได้ดังนี้ครับ ไปเพิ่ม Locale ให้ Alfresco รู้จัก ใน tomcat/shared/classes/alfresco/extension/web-client-config-custom.xml ตรง tag <languages> เพิ่ม <language locale="th_TH">Thai</language> เข้าไป directory: tomcat/webapps/alfresco/WEB-INF/classes/alfresco/model แล้วทำการ copy file dataTypeAnalyzers_fr.properties หรือไฟล์อื่นก็ได้ เปลี่ยนชื่อเป็น dataTypeAnalyzers_th.properties แล้วเปิดไฟล์ขึ้นมาแก้ไขให้เป็น d_dictionary.datatype.d_text.analyzer=org.apache.lucene.analysis.th.ThaiAnalyzer d_dictionary.datatype.d_content.analyzer=org.apache.lucene.analysis.th.ThaiAnalyzer หลังจากนั้นเมื่อทำการ...

Spring Roo vs Grails

Spring Roo หรือ Grails ดี ถ้าต้องเลือกระหว่างสองตัวนี้จะเลือกอะไรดี คำตอบแบ่งออกได้เป็นสองส่วน ส่วนแรกคือภาษาที่ถนัด หากใครเขียน Java อยู่แล้วไม่อยากเปลี่ยนก็ควรจะเลือก Spring Roo หากใครต้องการ magic ที่มากับ Dynamic Language ก็คิดว่าน่าจะใช้ Grails มากกว่า ส่วนที่สองคือ ความเร็วในการพัฒนาเนื่องจาก magic ที่มาจากภาษา Groovy ทำให้เราพัฒนา Application ได้เร็วกว่าภาษา Java (แต่อันนี้ก็แล้วแต่ความถนัก หากถนัด Java มากๆ ก็อาจจะเร็วกว่าก็ได้) แต่ส่วนที่คิดว่าเร็วกว่าแน่ๆ คือมันจะ Generate Method ส่วนใหญ่ให้ในขณะ Runtime เช่น findBookById() ซึ่งจะไม่มีโค้ดในส่วนนี้แต่จะเป็นการ Generate ให้เองจากตัว Framework แต่หากใช้ Spring Roo เราต้องมานั่งเขียน Method ส่วนนี้เอง ข้อดี ข้อเสีย Grails อย่างที่รู้ว่า Groovy นั้นจะ Generate Method ระหว่าง Runtime ให้และยังเป็นภาษา Script แม้จะมีการ Compile ให้เป็น Bytecode ของจาวาแล้วก็ตาม แต่ Performance ก็จะด้อยกว่า Pure Java อยู่ดี Spring Roo จะช้าในช่วง Develop time แต่ขณะ Runtime จะมี Performance ดีกว่า Grails เนื่องจากไม่มีส่วนที่ต้องสร้างขึ้นระหว่าง ...

Vim vs Emacs on Ubuntu Linux

เพิ่งรู้วันนี้เองว่า Vim บน Ubuntu นั้นมันยังไม่พร้อมสำหรับการเขียนโปรแกรม เราจำเป็นต้องทำการลงมันใหม่ก่อนด้วยคำสั่งที่แสนจะเคยชิน sudo apt-get install vim พอดีกำลังจะเลือก ide บน linux ไว้หัดเขียนภาษาซีใน linux ยังลังเลระหว่าง vim กับ emacs เห็นว่ามีสงครามระหว่าง editor สองเจ้านี้ด้วยข้อดีข้อเสียของ แต่ละตัวคือ Vim เป็นแบบ modes คือต้องเลือกว่าจะอยู่ในโหมดแก้ไขหรือว่าโหมดปกติ โหมดแก้ไขก็ได้แก่ i, a, bla bla blah โหลดปกติก็คือกด Esc ออกมา ข้อดีเร็ว ( สมัยตอนที่ยังเป็น Vi นะครับ) ข้อเสียคือสับสนว่าตอนนี้อยู่ในโหมดไหน Emacs เป็นแบบ modeless ถ้าใครนึกภาพไม่ออกก็พวกโปรแกรมแบบ GUI ทั่วไปก็เป็นแบบ modeless เสียเป็นส่วนใหญ่เช่น MS Word คือเราสามารถพิมพ์ข้อความลงไปได้เลย เมื่อต้องการจะใช้คำสั่งอะไรก็กด Ctrl+ เอาแทน ข้อดีคือไม่สับสนว่าอยู่ในโหมดไหน ข้อเสียคือเมื่อต้องการผสมคำสั่งเยอะๆ จะจำได้ไม่หมดเช่น C-x C-c อันนี้แค่คำสั่งเดียวแต่ต้องกดทั้ง Ctrl+x กับ Ctrl+c ถึงจะออกจากโหมดได้