Java

在生產伺服器上執行我自己的 java 程式碼的風險

  • April 8, 2019

我在一家電信公司擔任運營工程師,我負責幾台伺服器,我的主要任務是對這些伺服器進行“日常健康檢查”,其中一部分是與之前的一些值進行比較,我是考慮到繪製數據的不同選項,我需要你的幫助來評估在這些伺服器上執行我自己的小型 Java 程序的風險,因為我遠不是最好的開發人員,例如,如果我以某種方式開始了一個無限循環,或者我不要釋放我分配的資源。

提前致謝。

您的 Java 程序不太可能損壞伺服器,除非它是為了執行會損壞伺服器的操作而編寫的。

JVM 在啟動時分配一個連續的記憶體塊,稱為堆空間。您使用參數來控制堆的最小和最大大小;我忘記了預設值是什麼,但它們不是很大。如果堆用完,您的 Java 程序將崩潰或執行很差,但其他一切都應該不受影響。如果沒有足夠的記憶體供堆啟動,您的 JVM 可能不會啟動(這是一個依賴於平台的實現問題)。您不會直接在 Java 中“釋放您分配的資源”,但如果您不這樣做,這將是最接近會發生的事情。

JVM 在執行程式碼時可能會使用 100% 的伺服器 CPU。如果你放入一個無用的循環,它不會做任何有用的事情,可以吃掉那台機器上的所有 CPU。這可能對您的伺服器不利,因此請盡量不要這樣做。

你打算做任何並發嗎?啟動任何單獨的執行緒?使用 JNI 呼叫任何本機庫?執行獨立流程?這些都是可能導致可怕崩潰的所有事情,如果你做錯了很難弄清楚。既然你對自己的能力沒有信心,我現在就告訴你,如果你想到的任何事情都涉及到這些事情,就不要追求這個計劃。

除此之外,只要您確定沒有其他人將能夠任意執行此程序,它應該是低風險的,例如啟動它的十幾個實例以使您的伺服器崩潰。這是一個非常大的假設,所以間諜應該絕對確定它適用於這裡。

引用自:https://serverfault.com/questions/959914