Overview

Observable is a mod that can profile entities and block/tile entities in a server and show you in an organized way what is taking the most time to process each tick. The mod is extremely useful in troubleshooting lag and identifying sources of lag. It uses an in-game GUI paired with (in later versions) a web-based results list. It even has an in-game 3D overlay that highlights laggy blocks and mobs. To make things easier, the UI gives you easily copyable commands to teleport to any laggy entity, block, or chunk!

Is your Minecraft server lagging? Download Observable from their Curseforge page here and read on to learn how to use it.

I mentioned Spark earlier - and it goes best used alongside Observable. Spark does several things observable cannot, such as giving detailed traces of server processes that are taking up tick time, showing detailed RAM info, sorting by specific laggy ticks, and many other things. In the same way, Observable does many things that Spark cannot, such as giving a simple visualization of lag, finding specific, problematic chunks, quickly showing individual entities and blocks, and letting you teleport to these lag sources directly. Both mods can be used to effectively troubleshoot lag on a server.

How to use Observable

Think of this article as a handy guide on how to use observable and some of its features. For this guide, we will be using the 1.19.2 / 1.19.3 version of Observable, but it is available for versions up to 1.20.1 at the time of writing, for Minecraft Forge and Fabric. The main difference is that this version includes a web-based results list, while older versions had the results directly in the GUI. Functionally, they are almost identical. This means you can use this guide with older versions, but it may look a bit different. This guide is made with the Cottage Witch modpack which has several mods you may see in the results. Also, many of the screenshots have relatively normal stats from a server that is not lagging.

Using the Observable GUI

To use Observable in-game, you will need to be an OP. Here are instructions on making a player an OP. The default hotkey to open the Observable GUI is R. If it is included in your modpack by default, it may be a different key. You can check the key binding in the controls menu. Look for "Show profiler Screen".

Press the Observable hotkey to open the interface. Here you will see several buttons. The one we care about now, and the only one you're likely to need regularly, is the “Profile TPS button”. Click this and it will run with a timer visible on screen. You can close the GUI while this is running. Optionally, if your Minecraft version is 1.19 or above, you can run the command /observable run 30 where 30 is the configurable amount of seconds to run the profiler. This can be done in-game as an OP or in the server console.

Individual Results Tab

When the profile is finished, Observable will put the URL of the results into the chat for you. Click that link and click Yes to view the results. If you are using Observable in the server console, you will need to copy the URL and paste it into a browser.

Shown in the next image is the web page that contains the results. You will see that the Individual Results tab is the default tab. You should see a list of mobs, entities, and blocks sorted in order of μs/t, or microseconds per tick. The higher this number, the more lag that entity produces. Check to see if any entities in this list have a much higher μs/t than everything else.

In the results below, you can see that a player is using a lot of μs/t to process, which is relatively normal. Generally, most things should be below 1000 μs/t, or 1 millisecond per tick. Things to check for include very high numbers or if a single type is showing up several times in the page. On this page you can see that the Hexerei mixing cauldron shows up a lot, because every cauldron uses more μs/t to process than the average block. Beacons and hoppers do as well, so avoid placing a huge number of these blocks or any other that you notice take a long time to process.

Aggregate Results Tab

Next we will look at the “Aggregate Results” tab. This combines all entities of the same type into one entry so you can get a good idea of the total μs/t that a single type of entry is taking to process. You can also see how many total ticks each type of entity required. Most entities will not process every single tick, so keep an eye on the ones with the highest total ticks because these can cause a bit more lag than entries with a low total of ticks.

This tab is good for finding entities, mobs, and blocks that don't have any laggy individuals but together can cause huge amounts of lag. For example, if a player is using 300 hoppers to move items around, each individual hopper may not be laggy, and they might not show up in the individual results tab. But the lag will add up from all of them and you will be able to see that in this tab.

In this screenshot you can see that Hexerei mixing cauldrons are causing a bit of lag. The same is true with players, but players are usually at the top no matter what, so we can ignore that unless the number is very, very high. In this instance, it might be good to tell everyone to limit their usage of Hexerei cauldrons to one per player and try not to chunkload them.

Chunks Tab

The final tab we'll be looking at is the Chunks tab. This lists all chunks in order of μs/t, which is a good way to find very laggy bases or large groups of mobs. It doesn't have very much information on the page other than chunk location and tick time. But if you click the "Visit" link, it will copy a teleport command to your clipboard so that you can paste it into Minecraft by pressing CTRL+V with the in-game chat open. When you send the command, you will teleport and you can visit that chunk! We will show an example of how to teleport to locations and find lag in the rest of the guide.

Example of a Laggy Server's Observable Results

Below is a series of images that show a server with a lag source that I found using Observable. This is a manufactured scenario, and every server is different, but the basic steps of using Observable are the same.

The first image is the results page for the initial scan. The individual results tab looks normal, so we will skip that. The next image shows the aggregate results tab. You can see that cows are the greatest source of lag, and they are active during a high number of total ticks as well.

The next tab we’ll look at contains the list of chunks. You can see one chunk that stands out at the top. To visit that chunk in my game, I clicked the “Visit” link which copies a full command to teleport me to that chunk’s location. This also works for individual entities in the “Individual Results” screen.

Back in the game, I entered spectator mode to more easily explore. You can also change your gamemode to spectator using this command in game (as an OP): /gamemode spectator. Then I pasted the teleport command that I just copied from the results page into my chat window and ran it.

In the next 3 images you can see the 3D overlay feature Observable is known for. Note how the color changes depending on the amount of lag each block or mob is generating. Not every red box is bad, but if there are a lot of them in one place, that's something to be concerned about. You can see the Tom's Crafting Terminal and Hexerei Mixing Cauldron from the following screenshots in the previous results list as well. Neither of these have a high enough μs/t value to cause alarm, so I will ignore them in this case.

Lastly, I flew outside of the building and saw these fluffy friends in the next image. Lag source found! Like I mentioned earlier, cows were the highest source of lag from a single entity type, as seen in the “Aggregate Results” tab.

Often, if a single type of mob is the biggest lag source, you are likely to find a high concentration of them in one area, such as a spawner or a farm. Once most of the cows were re-homed (I sent them over to Hillshire Farm), the server lag settled down. Now that the lag is gone, I disabled the 3D lag overlay by pressing the Observable hotkey and then unchecking the “Overlay” box. The second image below shows that interaction.

Conclusion

In a real scenario, your data might look very different. The amount of lag could be much greater for some things, or there could be many, many things all causing lag at once. One more thing to note is that lag caused by chunk generation or from the server being low on RAM will not display in Observable. For this reason, I recommend running an Observable profile while no players are out exploring.

To see your RAM usage with the most accurate measurement, I would recommend using Spark in tandem with Observable - the dynamic duo of performance troubleshooting mods. Observable is great for finding specific lag sources and their location, and Spark is great at giving an overview of server performance over time, as well as more detailed metrics like RAM, garbage collection, CPU usage, and more.

If you want more info on Observable and its features, check out the official wiki here.

As always, if you want help deciphering what your Observable results mean, or if you can’t seem to get rid of that lag, contact Akliz support with the live chat bubble on the bottom right of the webpage on the Akliz website. We are always happy to help users cut down on lag and optimize servers as much as possible! And if you don’t have a plan with Akliz, that is one of the many reasons to get one! You can rent a server here for a huge list of games and modpacks all in one plan.