1 8 package org.mmbase.applications.crontab; 9 10 import org.mmbase.bridge.*; 11 import org.mmbase.util.functions.*; 12 import org.mmbase.util.logging.*; 13 import java.text.NumberFormat ; 14 import java.util.Locale ; 15 16 29 30 public class MemoryWarner extends AbstractCronJob { 31 private static final Logger log = Logging.getLoggerInstance(MemoryWarner.class); 32 33 34 public final void run() { 35 try { 36 String [] config = cronEntry.getConfiguration().split(";"); 37 38 Runtime rt = Runtime.getRuntime(); 39 rt.gc(); 40 41 long usedMemory = rt.totalMemory() - rt.freeMemory(); 42 long maxMemory = rt.maxMemory(); 43 44 double use = (double) usedMemory / rt.maxMemory(); 45 double limit = Double.parseDouble(config[0]); 46 String usePerc = NumberFormat.getPercentInstance(Locale.US).format(use); 47 String limitPerc = NumberFormat.getPercentInstance(Locale.US).format(limit); 48 if (use > limit) { 49 log.info("Memory use " + usePerc + " > " + limitPerc); 50 log.info("Used memory over " + limitPerc + " , mailing " + config[1]); 51 Cloud cloud = ContextProvider.getDefaultCloudContext().getCloud("mmbase", "class", null); 52 if (cloud.hasNodeManager("email")) { 53 NodeManager email = cloud.getNodeManager("email"); 54 Node message = email.createNode(); 55 message.setValue("from", "memorywarner@" + java.net.InetAddress.getLocalHost().getHostName()); 56 message.setValue("to", config[1]); 57 message.setValue("subject", "Out of memory warning: more than " + limitPerc + " in use, for " + 58 org.mmbase.module.core.MMBaseContext.getHtmlRootUrlPath() + "@" + 59 java.net.InetAddress.getLocalHost().getHostName()); 60 message.setValue("body", "Memory use " + usePerc + " > " + limitPerc); 61 message.commit(); 62 Function mail = message.getFunction("mail"); 63 Parameters params = mail.createParameters(); 64 params.set("type", "oneshot"); 65 mail.getFunctionValue(params); 66 } else { 67 log.warn("No mail builder installed"); 68 } 70 } else { 71 log.info("Memory use " + usePerc + " < " + limitPerc); 72 } 73 } catch (java.net.UnknownHostException uhe) { 74 log.error(uhe); 75 } 76 } 77 } 78 | Popular Tags |