การดำเนินการบรรทัดคำสั่ง Rhino ถูกหยุดทำงาน - สาเหตุอาจเกิดจากอะไร / วิธีแก้ไขข้อบกพร่อง

เรามีการตั้งค่าการทดสอบ Javascript ด้วย Rhino + Envjs และเซิร์ฟเวอร์ CI ที่ใช้ Ubuntu เรากำลังดำเนินการทดสอบจากบรรทัดคำสั่งดังต่อไปนี้:

java -cp ext/js.jar:ext/jline.jar org.mozilla.javascript.tools.shell.Main -opt -1 -f run.js

ตอนนี้เราประสบปัญหาที่น่าประหลาดใจดังต่อไปนี้: การทดสอบหยุดทำงาน โดยพิมพ์เฉพาะสิ่งต่อไปนี้:

[  Envjs/1.6 (Rhino; U; Linux amd64 3.2.0-33-generic; en-US; rv:1.7.0.rc2) Resig/20070309 PilotFish/1.2.13  ]
Killed

สำหรับคอมพิวเตอร์เครื่องอื่น (Mac) การทดสอบเดียวกันจะผ่านไปได้โดยไม่มีปัญหา ฉันลองใช้ debug switch -debug และขนาดหน่วยความจำ Java -Xmx1024m แต่นั่นไม่ได้ช่วยอะไร

หมายเหตุ: การรีสตาร์ทเซิร์ฟเวอร์ช่วยแก้ปัญหาในครั้งนี้

อัปเดต : หลังจากผ่านไปหลายวัน สิ่งนี้ก็เกิดขึ้นในวันนี้สองสามครั้ง อย่างไรก็ตามการสร้างครั้งต่อ ๆ ไปก็ประสบความสำเร็จ

อัปเดต 2 : ดูเหมือนว่าจะเกิดขึ้นเป็นระยะๆ บางครั้งหลังจากทำการทดสอบสำเร็จแล้ว

นี่อาจเป็นกรณีเดียว แต่คุณทราบหรือไม่ว่าอะไรคือสาเหตุหรือจะแก้ไขข้อบกพร่อง Rhino ได้อย่างไรหากเกิดเหตุการณ์เช่นนี้อีก

พี่โทวโกะ


person Touko    schedule 18.01.2013    source แหล่งที่มา


คำตอบ (1)


"ถูกฆ่า" หมายความว่ากระบวนการยุติลงโดยสัญญาณจากภายนอก กรณีทั่วไปคือ:

  • มีคนใช้ kill ด้วย ID กระบวนการที่ไม่ถูกต้อง
  • มีการติดตั้งตัวตรวจสอบทรัพยากรระบบซึ่งจะยุติกระบวนการที่ใช้ทรัพยากรมากเกินไป บน Linux ให้ใช้ ulimit และสอบถามผู้ดูแลระบบของคุณ
  • ระบบปฏิบัติการของคุณมีหน่วยความจำไม่เพียงพอในตำแหน่งที่ไม่สามารถแจ้งให้ Java ทราบเกี่ยวกับข้อผิดพลาดได้ (เช่น สิ่งนี้เกิดขึ้นเมื่อระบบปฏิบัติการเองต้องการหน่วยความจำเพื่อดำเนินการสำหรับ Java VM เช่น I/O ให้เสร็จสิ้น)
person Aaron Digulla    schedule 30.01.2013
comment
ที่เซิร์ฟเวอร์เสมือนของเรา ulimit นั้น 'ไม่จำกัด' แต่อาจเกี่ยวข้องกับปัญหาหน่วยความจำ เพิ่มหน่วยความจำสำหรับเซิร์ฟเวอร์เสมือนของเราแล้ว มาดูกันว่าปัญหายังคงเกิดขึ้นในอนาคตหรือไม่ - person Touko; 30.01.2013
comment
:-/ คุณควรได้รับ OutOfMemoryError หาก Java ไม่สามารถรับหน่วยความจำเพิ่มเติมจากระบบปฏิบัติการได้ คุณได้ตรวจสอบบันทึกของระบบเพื่อหาข้อผิดพลาดหรือไม่? - person Aaron Digulla; 30.01.2013
comment
เมื่อตรวจสอบ /var/log/syslog พบข้อมูลต่อไปนี้หลายครั้ง: ... หน่วยความจำไม่เพียงพอ: Kill process 934 (java) Score 337 or allowance child, ... Killed process 934 (java) Total-vm:1969140kB, อานนท์-rss:695888kB, ไฟล์-rss:0kB. Java ไม่แสดงข้อผิดพลาด / ข้อยกเว้นใด ๆ เพียงแต่ถูกฆ่าเท่านั้น - person Touko; 30.01.2013
comment
ในกรณีดังกล่าว ระบบปฏิบัติการมีหน่วยความจำไม่เพียงพอด้วยเหตุผลบางประการ จากนั้นหยุด Java VM โดยไม่เปิดโอกาสให้จัดการกับข้อผิดพลาด - person Aaron Digulla; 30.01.2013