1. We are planning scheduled maintenance on this website on Friday 5 March (tomorrow) at 4:00 am UTC. It is estimated that this maintenance will last 15 minutes. You can view this time in your local timezone here. Thanks.
    Dismiss Notice

Performance Analysis: Something Everyone Should Know About

Discussion in 'Performance Tweaking' started by Zeraceee, Feb 18, 2013.

  1. Well, we are all aware of the many different ways to analyze performance, mainly due to Kainzo (I suck at tagging people).

    Anyways, this simple plugin takes information from timings. If you don't know how to use timings, well, you enable 'plugin-profiling' in bukkit.yml. When lag starts, use /timings reset. After a good amount of time (5 Minutes is fine) use /timings merged.

    Install this plugin into your plugins folder, and simply time /timingsparser <timings file name>. It will give you a link to a google graph illustrating your lag and the percentage of which plugin gives the most lag. It is a GREAT way to see lag visually via plugins, in percentage.

    This helps extraordinarily with viewing these timings. It is a game changer, and is extremely lightweight. An example chart looks like this.
    #1 Zeraceee, Feb 18, 2013
    Last edited: Feb 18, 2013
  2. Aikar offers a free timing review service on his website ... aikar.co/timings.php - I think.

    This sounds interesting though :) you should make it so you can run without a server and just java applets.
  3. Sadly, I didn't make the plugin. But basically, you can copy paste the timings anywhere and use the command to generate a graph. So simply take timings on your server, copy over to your computer's 'demo' or dummy server, and use the plugin there.
  4. Would I still need to do /timings reset and wait 5 minutes before running the command?
  5. Sounds interesting. I'll take a look at this sometime this week and see if it helps clear up some issues on my server.
    Between work and tests this week, I'm relying on the other admins to keep the server up when it randomly freezes.
  6. LiLChris

    LiLChris Retired Moderator

    That is such a bad method, really should cut the 80 plugins in half.
    Then you won't have to worry about such a thing, mostly since your player base is below 16.
  7. We are working on it, we're down to 57 last count. Still getting some plugins combined such as Stained Glass and MoreMaterials, just trying to get the players to convert over.
  8. Let me give you a hint. Try out the bukkit plugin Skript. You can basically code your own plugins in a dumb-downed manor, but literally can still do so many things. I use it to create completely custom minigames. It is really flexible, and helped me eliminate 10+ small plugins.
  9. We've already considered it. Thanks though. And I agree, when I started using rTriggers, it helped cut back a number of small plugins. One of the more common additions I've added is separate group chats. If you are in X group, only those in that group see all the /xchat messages that are sent, and only those in that group can use that command. The staff on my server are quite happy that we don't need to do mass private messages now.

    Of of the bigger, but was confusing to set up, was the NewPlayerJoin rank (default) to Member setup. For each step they complete in the /howmember (read rules, find the agree command, pass the common-sense test) they were upped in ranking. Along the way, they were limited on certain perms and powers. Such as not reading the rules as they were taking the test.
  10. Timings are not 100% - if you want to know why you are lagging, get VisualVM / JMX.
    It is a for sure way to know.
  11. Group messaging is easily done for skript. As for member ranks, you could make the howmember command built into skript. Once the player executes it, set {read.%player%} to true. Then, on every (command required to rank to member) have it check if all variables are true. If they are, execute a console command on the player ranking him.

    For howmember: set {readmem.%player%} to true
    For Other1: set {other1.%player%} to true
    For Other2: set {other2.%player%} to true.

    On every one of those command add in a bit of code that checks if all 3 are completed. If they are, it automatically ranks the player.
  12. I do thank you for your help, but we are a little ways away from using skript. So far, no admin is interested in coding, though I am, to an extent, I would need to take a refresher course over Java before I could do anything productive with Skript.
    I'm not too worried with setting up the /howmember procedures and the group chatting, as it's already accomplished. If anything, the first task I'd code up is a way to check for player files and if they were gone for more than a year (or six months) to delete their player file and remove them from the player listing in PEX. Manually doing so for PEX is a bit of a pain and the commands PEX has doesn't seem to do anything.
    When I do start working on Skript and start setting things up, I may make a thread when I have questions or looking for suggestions. For now, I'm tinkering with GUI Creator, which is helping me clear out a bunch of junk from rtriggers already.

    For now, let's stay on the threads subject so we don't confuse anyone, lol