Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * *********************************************************************************************************
- *
- * Usage:
- *
- * Run this Script Lifeay 6.2 's scripting console to trouble shot caches
- *
- * variable MIN_MISS_PERCENTAGE you can limit that itdoes not pring caches that fill rate is low.
- * variable PRINT_SQL set this true if you want to print SQL statement ready to be inserted
- * variable NODE_NAME is the node name for printSQL statement.
- *
- CREATE TABLE CacheSizes (
- node VARCHAR(12) NOT NULL,
- cacheType VARCHAR(12) NOT NULL,
- bean VARCHAR(255) NOT NULL,
- objectCount INT NOT NULL,
- cacheHits INT NOT NULL,
- cacheMisses INT NOT NULL,
- cacheMissPercentage INT NOT NULL,
- PRIMARY KEY ( node, cacheType, bean )
- );
- *
- * See variables below:
- **/
- var MIN_MISS_PERCENTAGE = 0;
- var NODE_NAME="node1";
- var PRINT_SQL=false;
- /**
- * *********************************************************************************************************
- */
- var fields = [ "CacheType", ".Bean", "ObjectCount", "CacheHits", "CacheMisses", "CacheMissPercentage" ];
- var padding30 = Array(30).join(' '), padding12 = Array(12).join(' '), padding20 = Array(20).join(' ');
- var platformMBeanServer = Packages.java.lang.management.ManagementFactory.getPlatformMBeanServer();
- function printInColumns(values, isHeader) {
- var beanName = values[1], cacheType = values[0].slice(0, 9), objectCount = values[2], cacheHits = values[3], cacheMisses = values[4], cacheMissPercentage = values[5];
- if (PRINT_SQL) {
- if (isHeader) return;
- out.println("INSERT INTO CacheSizes VALUES (\"" + NODE_NAME + "\",\"" + cacheType + "\",\"" + beanName + "\"," + objectCount + "," + cacheHits + "," + cacheMisses + "," + cacheMissPercentage + ");");
- }
- else {
- out.println(values[0].slice(0, 9) + " "
- + (beanName.slice(beanName.lastIndexOf('.') + 1) + padding30).slice(0, 30)
- + (padding12 + values[2]).slice(-12)
- + (padding12 + values[3]).slice(-12)
- + (padding12 + values[4]).slice(-12)
- + (padding20 + values[5]).slice(-20)
- + " " + beanName);
- }
- }
- function liferayStatisticBeans() {
- var result = [];
- var names = platformMBeanServer.queryNames(new Packages.javax.management.ObjectName("net.sf.ehcache:*"), null);
- for (var iterator = names.iterator(); iterator.hasNext(); ) {
- var name = iterator.next();
- if (name.getCanonicalName().endsWith("CacheStatistics")) {
- result[result.length] = name;
- }
- }
- return result;
- }
- function displayLiferayCaches(names) {
- printInColumns(fields,true);
- for (var x = 0; x < names.length; x++) {
- var cachesStats = [];
- if (names[x].getCanonicalName().startsWith("net.sf.ehcache:CacheManager=net.sf.ehcache.CacheManager")) {
- continue;
- }
- var object = platformMBeanServer.getAttribute(names[x], fields[5]);
- var misspercentage = Packages.java.lang.Math.round(object.doubleValue() * 100);;
- if (misspercentage >= MIN_MISS_PERCENTAGE) {
- cachesStats[5] = misspercentage;
- var name = names[x].getCanonicalName().slice("net.sf.ehcache:CacheManager=".length);
- cachesStats[0] = name.slice(0, name.indexOf(','));
- var cacheBean = name.slice(name.indexOf(",name=") + 6);
- cachesStats[1] = cacheBean.slice(0, cacheBean.length - ",type=CacheStatistics".length);
- for (var i = 2; i < 5 ; i++) {
- var object = platformMBeanServer.getAttribute(names[x], fields[i]);
- if (object instanceof Packages.java.lang.Double) {
- cachesStats[i] = Packages.java.lang.Math.round(object.doubleValue() * 100);
- } else {
- cachesStats[i] = object;
- }
- }
- printInColumns(cachesStats,false);
- }
- }
- }
- var names = liferayStatisticBeans();
- if (names.length > 0) {
- displayLiferayCaches(names);
- }
Add Comment
Please, Sign In to add comment