Score:0

สามารถวางคอนเทนเนอร์บนโฮสต์ EC2 แบบโอเวอร์โหลดใน AWS ECS ได้หรือไม่

ธง ua

ฉันมีอินสแตนซ์ที่มีแอปพลิเคชัน tomcat หลายตัวและ jars แบบสแตนด์อโลนทำงานอยู่ หากเครื่องมี 2vcpu และ 8GB RAM แต่ละแอปพลิเคชันสามารถใช้ทรัพยากรได้ตามต้องการ (ขึ้นอยู่กับค่า Xms และ Xmx ที่ตั้งค่าสำหรับ Tomcat และสำหรับแต่ละ Jar) ECS ไม่ได้อยู่ในภาพ ณ จุดนี้

ตอนนี้ฉันจะย้ายแอปพลิเคชันไปยังคอนเทนเนอร์บนอินสแตนซ์ EC2 (ไม่ใช่ fargate) เป็นไปได้หรือไม่ที่จะมีคำจำกัดความของงานที่ฉันระบุซีพียูและหน่วยความจำซึ่งรวมกันแล้วมากกว่าซีพียูหรือแรมจริงของโฮสต์ EC2

เนื่องจากฉันไม่คาดหวังว่าแอปพลิเคชันทั้งหมดจะใช้หน่วยความจำ 100% ที่จัดสรรให้ในระหว่างการสร้างข้อกำหนดของงาน เป็นไปได้ไหมที่จะมีโฮสต์ ECS ที่มี 4vcpus และฉันวางงาน 10 งานไว้ทั้งหมดโดยระบุ 4vcpus ในคำจำกัดความของงาน ฉันรู้ว่างานจะไม่ใช้ 4vcpu แต่ฉันต้องการว่าหากงานใดจำเป็นต้องใช้ งานเหล่านั้นไม่ควรถูกจำกัดให้ใช้เต็มความจุของโฮสต์

ฉันทราบว่า ECS มีความสามารถในการปรับขนาดซึ่งฉันวางแผนจะใช้แต่ฉันมีเป้าหมายเพื่อให้แน่ใจว่าจะไม่จัดสรรโฮสต์ EC2 ที่ฉันใช้สำหรับ ECS มากเกินไป

Score:0
ธง nl

คำตอบสั้น ๆ คือคุณสามารถทำได้ แต่มีความแตกต่างกันเล็กน้อย หากคุณกำหนดค่าขนาดของคำจำกัดความของงาน คุณจะไม่สามารถคอมมิตทรัพยากรซีพียู/หน่วยความจำมากเกินไป อย่างไรก็ตาม หากคุณกำลังปรับใช้กับ EC2 คุณสามารถละเว้นขนาดงานในข้อกำหนดของงาน และถือว่างานทั้งหมดจะสามารถเข้าถึงความจุของโฮสต์ทั้งหมดได้ จากนั้น คุณสามารถปรับแต่งทรัพยากรซีพียู/หน่วยความจำ (การรับประกัน/เพดาน ฯลฯ) ในแต่ละคอนเทนเนอร์ได้ สิ่งนี้จะช่วยให้คุณทำ over-commit ได้

คำตอบที่ยาวกว่าคือ ที่นี่.

Kohini avatar
ua flag
ฉันจะต้องตั้งค่า Xms และ Xmx ภายในภาพ Tomcat หรือไม่ ฉันคิดว่าถ้าฉันไม่ได้ตั้งค่าในอิมเมจ แม้ว่าทรัพยากรโฮสต์ ec2 จะพร้อมใช้งานสำหรับคอนเทนเนอร์ แต่พารามิเตอร์เริ่มต้นของ java จะเข้ามามีบทบาทเพื่อกำหนดจำนวนหน่วยความจำที่แอปพลิเคชันปรับใช้ภายใน tomcat สามารถใช้ได้ ขอบคุณ!
mreferre avatar
nl flag
ขึ้นอยู่กับเวอร์ชัน Java เฉพาะที่ใช้ Java เวอร์ชันก่อนหน้าจะไม่สนใจคอนเทนเนอร์/cgroups และพวกเขาจะถือว่าทรัพยากรโฮสต์ทั้งหมดที่พวกเขาเห็น (เพราะพวกเขาสามารถเห็นทรัพยากรทั้งหมดได้ตลอดเวลา) พร้อมใช้งานสำหรับพวกเขา Java เวอร์ชันที่ใหม่กว่านั้นฉลาดพอที่จะตระหนักว่าพวกมันอยู่ภายในขอบเขตเสมือนจริงของ cgroups และรับรู้ถึงโครงสร้างคอนเทนเนอร์ IMO การตั้งค่าพารามิเตอร์เหล่านี้ภายในแอปนั้นไม่ใช่ความคิดที่ไม่ดีเลย PS มีบันทึกในบล็อกเกี่ยวกับเรื่องนี้
Kohini avatar
ua flag
มีบรรทัดหนึ่งในบล็อก `ถ้าคุณกำหนดเฉพาะฮาร์ดลิมิต นั่นหมายถึงทั้งการจองและเพดาน` ซึ่งดูไม่สมเหตุสมผล ถ้าฉันตั้งค่าฮาร์ดลิมิตไว้ที่ 2GB เท่านั้น (แต่ไม่มีซอฟต์ลิมิต) ทำไมมันถึงเป็นค่าที่สงวนไว้สำหรับคอนเทนเนอร์ด้วย ฉันจะจินตนาการว่าไม่มีซอฟต์ลิมิต ไม่มีหน่วยความจำสำรอง เพียงแค่หน่วยความจำที่คอนเทนเนอร์ต้องการนั้นนำมาจากโฮสต์และขีดจำกัดของฮาร์ด 2GB
mreferre avatar
nl flag
มันเป็นวิธีที่ถูกนำไปใช้ ฉันเชื่อว่าเป็นเพราะเมื่อคุณไม่ได้ตั้งค่าขนาดงาน ระบบจำเป็นต้องทราบจำนวนหน่วยความจำที่สงวนไว้ และหากไม่ได้ตั้งค่า ขีดจำกัดจะถูกถือเป็นการจอง หากคุณต้องการให้วงเงินแตกต่างออกไป การจองคุณต้องตั้งค่าทั้งสองอย่างชัดเจน

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา