Guest User

Untitled

a guest
Jun 20th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.61 KB | None | 0 0
  1. /**
  2. * *********************************************************************************************************
  3. *
  4. * Usage:
  5. *
  6. * Run this Script Lifeay 6.2 's scripting console to trouble shot caches
  7. *
  8. * variable MIN_MISS_PERCENTAGE you can limit that itdoes not pring caches that fill rate is low.
  9. * variable PRINT_SQL set this true if you want to print SQL statement ready to be inserted
  10. * variable NODE_NAME is the node name for printSQL statement.
  11. *
  12. CREATE TABLE CacheSizes (
  13. node VARCHAR(12) NOT NULL,
  14. cacheType VARCHAR(12) NOT NULL,
  15. bean VARCHAR(255) NOT NULL,
  16. objectCount INT NOT NULL,
  17. cacheHits INT NOT NULL,
  18. cacheMisses INT NOT NULL,
  19. cacheMissPercentage INT NOT NULL,
  20. PRIMARY KEY ( node, cacheType, bean )
  21. );
  22. *
  23. * See variables below:
  24. **/
  25.  
  26. var MIN_MISS_PERCENTAGE = 0;
  27. var NODE_NAME="node1";
  28. var PRINT_SQL=false;
  29.  
  30. /**
  31. * *********************************************************************************************************
  32. */
  33.  
  34.  
  35. var fields = [ "CacheType", ".Bean", "ObjectCount", "CacheHits", "CacheMisses", "CacheMissPercentage" ];
  36.  
  37. var padding30 = Array(30).join(' '), padding12 = Array(12).join(' '), padding20 = Array(20).join(' ');
  38.  
  39. var platformMBeanServer = Packages.java.lang.management.ManagementFactory.getPlatformMBeanServer();
  40.  
  41. function printInColumns(values, isHeader) {
  42. var beanName = values[1], cacheType = values[0].slice(0, 9), objectCount = values[2], cacheHits = values[3], cacheMisses = values[4], cacheMissPercentage = values[5];
  43.  
  44. if (PRINT_SQL) {
  45. if (isHeader) return;
  46.  
  47. out.println("INSERT INTO CacheSizes VALUES (\"" + NODE_NAME + "\",\"" + cacheType + "\",\"" + beanName + "\"," + objectCount + "," + cacheHits + "," + cacheMisses + "," + cacheMissPercentage + ");");
  48. }
  49. else {
  50. out.println(values[0].slice(0, 9) + " "
  51. + (beanName.slice(beanName.lastIndexOf('.') + 1) + padding30).slice(0, 30)
  52. + (padding12 + values[2]).slice(-12)
  53. + (padding12 + values[3]).slice(-12)
  54. + (padding12 + values[4]).slice(-12)
  55. + (padding20 + values[5]).slice(-20)
  56. + " " + beanName);
  57. }
  58. }
  59.  
  60. function liferayStatisticBeans() {
  61. var result = [];
  62.  
  63. var names = platformMBeanServer.queryNames(new Packages.javax.management.ObjectName("net.sf.ehcache:*"), null);
  64. for (var iterator = names.iterator(); iterator.hasNext(); ) {
  65. var name = iterator.next();
  66. if (name.getCanonicalName().endsWith("CacheStatistics")) {
  67. result[result.length] = name;
  68. }
  69. }
  70.  
  71. return result;
  72. }
  73.  
  74. function displayLiferayCaches(names) {
  75. printInColumns(fields,true);
  76.  
  77. for (var x = 0; x < names.length; x++) {
  78. var cachesStats = [];
  79. if (names[x].getCanonicalName().startsWith("net.sf.ehcache:CacheManager=net.sf.ehcache.CacheManager")) {
  80. continue;
  81. }
  82. var object = platformMBeanServer.getAttribute(names[x], fields[5]);
  83. var misspercentage = Packages.java.lang.Math.round(object.doubleValue() * 100);;
  84. if (misspercentage >= MIN_MISS_PERCENTAGE) {
  85. cachesStats[5] = misspercentage;
  86.  
  87. var name = names[x].getCanonicalName().slice("net.sf.ehcache:CacheManager=".length);
  88.  
  89. cachesStats[0] = name.slice(0, name.indexOf(','));
  90.  
  91. var cacheBean = name.slice(name.indexOf(",name=") + 6);
  92. cachesStats[1] = cacheBean.slice(0, cacheBean.length - ",type=CacheStatistics".length);
  93.  
  94. for (var i = 2; i < 5 ; i++) {
  95. var object = platformMBeanServer.getAttribute(names[x], fields[i]);
  96. if (object instanceof Packages.java.lang.Double) {
  97. cachesStats[i] = Packages.java.lang.Math.round(object.doubleValue() * 100);
  98.  
  99. } else {
  100. cachesStats[i] = object;
  101. }
  102. }
  103.  
  104. printInColumns(cachesStats,false);
  105. }
  106.  
  107. }
  108. }
  109.  
  110. var names = liferayStatisticBeans();
  111. if (names.length > 0) {
  112. displayLiferayCaches(names);
  113. }
Add Comment
Please, Sign In to add comment