TickThreading - concurrent entity/tile entity ticks and other optimisations

Ani76

New Member
Jul 29, 2019
9
0
0
to the date where we had the problem (issues 933) , it was too late to load a backup (rollback of 48 hours) so we moved on.

Now we delete all invisible pipes.
 

saki2fifty

New Member
Jul 29, 2019
73
0
0
Fyi, had to add this to the .sh profiling script to connect remotely:
-Djava.rmi.server.hostname=<ip address>
 

Roachy

New Member
Jul 29, 2019
44
0
0
Wow. I expected this to be one of those mods I would test out on a copy of my server, have it not work or crash and drop it and never look back. But I followed the simple installation instructions and not only did it work but it seriously improved my server's tickrates. Previously items in my pipes and tubes were doing the two-steps-forward-one-step-back dance. Likewise for the stars. Now there is none of that, and my aura nodes even pulsate like they're supposed to :D

Bravo sir.

For the curious:
Mindcrack 8.3.2 (MC 1.4.7)
Server running with 4GB/8GB allocated on a Core2 Quad Q6600 @2.4GHz
Win Server 2008 64-bit SP2
 

BreakingReality

New Member
Jul 29, 2019
26
0
0
Hello again, can you please explain in detail what /ticks exactly does?

How do I know what's lagging the server? how do I know what coordinates to check? How does tick time work? and what do tiles represent?

Server is crashing repeatedly, like every 10 minutes or so. I get this severe error right before it crashes!


29.07 10:47:33 [Server] INFO at cpw.mods.fml.relauncher.RelaunchClassLoader.findClass(RelaunchClassLoader.java:207)
29.07 10:47:33 [Server] INFO at java.security.SecureClassLoader.defineClass(Unknown Source)
29.07 10:47:33 [Server] INFO at java.lang.ClassLoader.defineClass(Unknown Source)
29.07 10:47:33 [Server] INFO at java.lang.ClassLoader.defineClass1(Native Method)
29.07 10:47:33 [Server] INFO Caused by: java.lang.OutOfMemoryError: PermGen space
29.07 10:47:33 [Server] INFO ... 11 more
29.07 10:47:33 [Server] INFO at java.lang.ClassLoader.loadClass(Unknown Source)
29.07 10:47:33 [Server] INFO at java.lang.ClassLoader.loadClass(Unknown Source)
29.07 10:47:33 [Server] INFO at cpw.mods.fml.relauncher.RelaunchClassLoader.findClass(RelaunchClassLoader.java:218)
29.07 10:47:33 [Server] INFO Caused by: java.lang.ClassNotFoundException: com.eloraam.redpower.core.Vector3
29.07 10:47:33 [Server] INFO at nallar.tickthreading.util.FakeServerThread.run(FakeServerThread.java:16)
29.07 10:47:33 [Server] INFO at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
29.07 10:47:33 [Server] INFO at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
29.07 10:47:33 [Server] INFO at nallar.patched.storage.ThreadedChunkProvider$ChunkLoadRunnable.run(ThreadedChunkProvider.java:945)
29.07 10:47:33 [Server] INFO at im.getChunkAt(ThreadedChunkProvider.java:521)
29.07 10:47:33 [Server] INFO at im.getChunkAtInternal(ThreadedChunkProvider.java:649)
29.07 10:47:33 [Server] INFO at im.tryPopulateChunks(ThreadedChunkProvider.java:684)
29.07 10:47:33 [Server] INFO at im.populate(ThreadedChunkProvider.java:666)
29.07 10:47:33 [Server] INFO at cpw.mods.fml.common.registry.GameRegistry.generateWorld(GameRegistry.java:128)
29.07 10:47:33 [Server] INFO at com.eloraam.redpower.world.WorldGenHandler.generate(WorldGenHandler.java:162)
29.07 10:47:33 [Server] INFO at com.eloraam.redpower.world.WorldGenRubberTree.a(WorldGenRubberTree.java:111)
29.07 10:47:33 [Server] INFO java.lang.NoClassDefFoundError: com/eloraam/redpower/core/Vector3
29.07 10:47:33 [Server] SEVERE Exception loading chunk asynchronously.
 

MinerDude333

New Member
Jul 29, 2019
49
0
0
Hello again, can you please explain in detail what /ticks exactly does?

How do I know what's lagging the server? how do I know what coordinates to check? How does tick time work? and what do tiles represent?

Server is crashing repeatedly, like every 10 minutes or so. I get this severe error right before it crashes!


29.07 10:47:33 [Server] INFO at cpw.mods.fml.relauncher.RelaunchClassLoader.findClass(RelaunchClassLoader.java:207)
29.07 10:47:33 [Server] INFO at java.security.SecureClassLoader.defineClass(Unknown Source)
29.07 10:47:33 [Server] INFO at java.lang.ClassLoader.defineClass(Unknown Source)
29.07 10:47:33 [Server] INFO at java.lang.ClassLoader.defineClass1(Native Method)
29.07 10:47:33 [Server] INFO Caused by: java.lang.OutOfMemoryError: PermGen space
29.07 10:47:33 [Server] INFO ... 11 more
29.07 10:47:33 [Server] INFO at java.lang.ClassLoader.loadClass(Unknown Source)
29.07 10:47:33 [Server] INFO at java.lang.ClassLoader.loadClass(Unknown Source)
29.07 10:47:33 [Server] INFO at cpw.mods.fml.relauncher.RelaunchClassLoader.findClass(RelaunchClassLoader.java:218)
29.07 10:47:33 [Server] INFO Caused by: java.lang.ClassNotFoundException: com.eloraam.redpower.core.Vector3
29.07 10:47:33 [Server] INFO at nallar.tickthreading.util.FakeServerThread.run(FakeServerThread.java:16)
29.07 10:47:33 [Server] INFO at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
29.07 10:47:33 [Server] INFO at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
29.07 10:47:33 [Server] INFO at nallar.patched.storage.ThreadedChunkProvider$ChunkLoadRunnable.run(ThreadedChunkProvider.java:945)
29.07 10:47:33 [Server] INFO at im.getChunkAt(ThreadedChunkProvider.java:521)
29.07 10:47:33 [Server] INFO at im.getChunkAtInternal(ThreadedChunkProvider.java:649)
29.07 10:47:33 [Server] INFO at im.tryPopulateChunks(ThreadedChunkProvider.java:684)
29.07 10:47:33 [Server] INFO at im.populate(ThreadedChunkProvider.java:666)
29.07 10:47:33 [Server] INFO at cpw.mods.fml.common.registry.GameRegistry.generateWorld(GameRegistry.java:128)
29.07 10:47:33 [Server] INFO at com.eloraam.redpower.world.WorldGenHandler.generate(WorldGenHandler.java:162)
29.07 10:47:33 [Server] INFO at com.eloraam.redpower.world.WorldGenRubberTree.a(WorldGenRubberTree.java:111)
29.07 10:47:33 [Server] INFO java.lang.NoClassDefFoundError: com/eloraam/redpower/core/Vector3
29.07 10:47:33 [Server] SEVERE Exception loading chunk asynchronously.

That means you need to increase the PermGen size. Or just get java 8. I'm pretty supportive of java 8 right now, because my framerate AND tickrates have increased upon updating. If you still want to increase your permgen size, just add "-XX:MaxPermSize=256M" to your batch file.
 

BreakingReality

New Member
Jul 29, 2019
26
0
0
That means you need to increase the PermGen size. Or just get java 8. I'm pretty supportive of java 8 right now, because my framerate AND tickrates have increased upon updating. If you still want to increase your permgen size, just add "-XX:MaxPermSize=256M" to your batch file.

Umm I'm using a server provider to run the server for me (multicraft) so how would I find the batch file?
 

MinerDude333

New Member
Jul 29, 2019
49
0
0
Umm I'm using a server provider to run the server for me (multicraft) so how would I find the batch file?

Just add "-XX:MaxPermSize=256M" to startup parameters or something. I was under the assumption that you were hosting on a local computer, seeing as you were able to install this mod.
 

Jared39

New Member
Jul 29, 2019
125
0
0
Umm I'm using a server provider to run the server for me (multicraft) so how would I find the batch file?
You should contact your hosting company's support and ask them for a custom startup. It would normally be a .sh since most server host use Linux.
 

BreakingReality

New Member
Jul 29, 2019
26
0
0
ok, I'd really appreciate a solid answer on whats going on, this error seems to pop up everytime the server crashes every 20-40 minutes. I have the latest 1.4.7 Tickthreading installed also.

31.07 00:29:17 [Server] INFO list
31.07 00:28:39 [Server] INFO list
31.07 00:28:02 [Server] INFO list
31.07 00:27:10 [Server] INFO list
31.07 00:26:07 [Server] INFO list
31.07 00:25:30 [Server] INFO list
31.07 00:24:32 [Server] INFO list
31.07 00:23:55 [Server] INFO list
31.07 00:23:53 [Server] SEVERE java.lang.OutOfMemoryError: PermGen space
31.07 00:23:51 [Server] SEVERE Exception in thread "Deadlock Detector"
31.07 00:23:49 [Server] INFO Server still seems to be saving, must've deadlocked.
31.07 00:23:45 [Server] INFO at cj.run(TcpMasterThread.java:23)
31.07 00:23:45 [Server] INFO at java.lang.Thread.stop(Unknown Source)
31.07 00:23:45 [Server] INFO Caused by: java.lang.ThreadDeath
31.07 00:23:45 [Server] INFO at ch.run(ReplaceTcpReaderThread.java:22)
31.07 00:23:45 [Server] INFO at cg.readNetworkPacket(TcpConnection.java:72)
31.07 00:23:45 [Server] INFO at cg.i(TcpConnection.java:348)
31.07 00:23:45 [Server] INFO at cu.a(Packet3Chat.java:59)
31.07 00:23:45 [Server] INFO at iv.a(NetServerHandler.java:1188)
31.07 00:23:45 [Server] INFO at iv.chat(NetServerHandler.java:1271)
31.07 00:23:45 [Server] INFO at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java)
31.07 00:23:45 [Server] INFO at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
31.07 00:23:45 [Server] INFO at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
31.07 00:23:45 [Server] INFO at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:363)
31.07 00:23:45 [Server] INFO org.bukkit.event.EventException
31.07 00:23:45 [Server] SEVERE Could not pass event AsyncPlayerChatEvent to GriefPrevention v7.6.2
31.07 00:23:18 [Server] INFO list
31.07 00:22:40 [Server] INFO list
31.07 00:22:02 [Server] INFO list
31.07 00:21:38 [Server] INFO list
31.07 00:21:14 [Server] INFO save-all
31.07 00:21:14 [Server] INFO save-on
31.07 00:21:08 [Multicraft] Auto-saving world...
31.07 00:20:50 [Server] INFO list
31.07 00:20:48 [Server] SEVERE The server seems to have frozen while saving - Waiting for two minutes to give it time to complete.
31.07 00:20:09 [Server] Startup Done saving player data, now saving 4 worlds.
31.07 00:20:09 [Server] INFO Saving all player data.
31.07 00:20:07 [Server] INFO Caused by: java.lang.OutOfMemoryError: PermGen space
31.07 00:20:07 [Server] INFO ... 19 more
31.07 00:20:07 [Server] INFO at java.lang.ClassLoader.loadClass(Unknown Source)
31.07 00:20:07 [Server] INFO at java.lang.ClassLoader.loadClass(Unknown Source)
31.07 00:20:07 [Server] INFO at cpw.mods.fml.relauncher.RelaunchClassLoader.findClass(RelaunchClassLoader.java:218)
31.07 00:20:07 [Server] INFO Caused by: java.lang.ClassNotFoundException: appeng.slot.SlotStorageCells
31.07 00:20:07 [Server] INFO at fy.run(ThreadMinecraftServer.java:16)
31.07 00:20:07 [Server] INFO at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:199)
31.07 00:20:07 [Server] INFO at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:306)
31.07 00:20:07 [Server] INFO at ho.r(DedicatedServer.java:309)
31.07 00:20:07 [Server] INFO at net.minecraft.server.MinecraftServer.r(MinecraftServer.java:430)
31.07 00:20:07 [Server] INFO at ht.b(DedicatedServerListenThread.java:34)
31.07 00:20:07 [Server] INFO at iw.b(NetworkListenThread.java)
31.07 00:20:07 [Server] INFO at iw.b_net_minecraft_network_NetworkListenThread_networkTick_p0(NetworkListenThread.java:57)
31.07 00:20:07 [Server] INFO at iv.d(NetServerHandler.java:220)
31.07 00:20:07 [Server] INFO at cg.b(TcpConnection.java:467)
31.07 00:20:07 [Server] INFO at fk.a(Packet15Place.java:79)
31.07 00:20:07 [Server] INFO at iv.a(NetServerHandler.java:906)
31.07 00:20:07 [Server] INFO at ir.a(ItemInWorldManager.java:573)
31.07 00:20:07 [Server] INFO at appeng.common.AppEngMultiBlock.a(AppEngMultiBlock.java:353)
31.07 00:20:07 [Server] INFO at appeng.me.block.BlockDrive.onBlockActivated(BlockDrive.java:95)
31.07 00:20:07 [Server] INFO at qx.openGui(EntityPlayer.java:2455)
31.07 00:20:07 [Server] INFO at cpw.mods.fml.common.network.FMLNetworkHandler.openGui(FMLNetworkHandler.java:336)
31.07 00:20:07 [Server] INFO at cpw.mods.fml.common.network.NetworkRegistry.openRemoteGui(NetworkRegistry.java:345)
31.07 00:20:07 [Server] INFO at appeng.gui.AppEngGuiHandler.getServerGuiElement(AppEngGuiHandler.java:129)
31.07 00:20:07 [Server] INFO java.lang.NoClassDefFoundError: appeng/slot/SlotStorageCells
31.07 00:20:07 [Server] SEVERE Encountered an unexpected exceptionNoClassDefFoundError
31.07 00:20:05 [Server] INFO Stack trace unavailable for java.lang.OutOfMemoryError: PermGen space-java.lang.OutOfMemoryError. Add -XX:-OmitStackTraceInFastThrow to your java parameters to see all stack traces.
31.07 00:20:05 [Server] SEVERE Exception ticking world Breaking Reality Reloaded/0
31.07 00:20:04 [Server] INFO Stack trace unavailable for java.lang.OutOfMemoryError: PermGen space-java.lang.OutOfMemoryError. Add -XX:-OmitStackTraceInFastThrow to your java parameters to see all stack traces.
31.07 00:20:04 [Server] SEVERE Exception ticking TileEntity c com.shadwdrgn.soulshards.TESoulCage @816901621 in Breaking Reality Reloaded/0 at x, y, z: 201, 68, 1496
31.07 00:20:03 [Server] INFO Stack trace unavailable for java.lang.OutOfMemoryError: PermGen space-java.lang.OutOfMemoryError. Add -XX:-OmitStackTraceInFastThrow to your java parameters to see all stack traces.
31.07 00:20:03 [Server] SEVERE Exception ticking world Breaking Reality Reloaded/0
31.07 00:20:01 [Server] INFO Stack trace unavailable for java.lang.OutOfMemoryError: PermGen space-java.lang.OutOfMemoryError. Add -XX:-OmitStackTraceInFastThrow to your java parameters to see all stack traces.
31.07 00:20:01 [Server] SEVERE Exception ticking TileEntity c com.shadwdrgn.soulshards.TESoulCage @1805151051 in Breaking Reality Reloaded/0 at x, y, z: 113, 50, 7093
31.07 00:19:59 [Server] INFO Stack trace unavailable for java.lang.OutOfMemoryError: PermGen space-java.lang.OutOfMemoryError. Add -XX:-OmitStackTraceInFastThrow to your java parameters to see all stack traces.
31.07 00:19:59 [Server] SEVERE Exception ticking TileEntity c com.shadwdrgn.soulshards.TESoulCage @816901621 in Breaking Reality Reloaded/0 at x, y, z: 201, 68, 1496
31.07 00:19:58 [Server] INFO Stack trace unavailable for java.lang.OutOfMemoryError: PermGen space-java.lang.OutOfMemoryError. Add -XX:-OmitStackTraceInFastThrow to your java parameters to see all stack traces.
31.07 00:19:58 [Server] SEVERE Exception ticking TileEntity c com.shadwdrgn.soulshards.TESoulCage @1026564439 in Breaking Reality Reloaded/0 at x, y, z: 4366, 66, -3825
31.07 00:19:56 [Server] INFO Stack trace unavailable for java.lang.OutOfMemoryError: PermGen space-java.lang.OutOfMemoryError. Add -XX:-OmitStackTraceInFastThrow to your java parameters to see all stack traces.
31.07 00:19:56 [Server] SEVERE Exception ticking TileEntity c com.shadwdrgn.soulshards.TESoulCage @1550956179 in Breaking Reality Reloaded/0 at x, y, z: 4385, 128, -3834
31.07 00:19:55 [Server] INFO Stack trace unavailable for java.lang.OutOfMemoryError: PermGen space-java.lang.OutOfMemoryError. Add -XX:-OmitStackTraceInFastThrow to your java parameters to see all stack traces.
31.07 00:19:55 [Server] SEVERE Exception ticking TileEntity c com.shadwdrgn.soulshards.TESoulCage @1088869286 in Breaking Reality Reloaded/0 at x, y, z: 116, 50, 7093
31.07 00:19:53 [Server] INFO Stack trace unavailable for java.lang.OutOfMemoryError: PermGen space-java.lang.OutOfMemoryError. Add -XX:-OmitStackTraceInFastThrow to your java parameters to see all stack traces.
31.07 00:19:53 [Server] SEVERE Exception ticking TileEntity c com.shadwdrgn.soulshards.TESoulCage @1460617917 in Breaking Reality Reloaded/0 at x, y, z: 111, 50, 7090
31.07 00:19:52 [Server] WARNING Pipe failed to load from NBT at 106,53,7104
31.07 00:19:51 [Server] SEVERE java.lang.OutOfMemoryError: PermGen space
31.07 00:19:50 [Server] INFO t
31.07 00:19:50 [Server] INFO lis2013-07-31 00:19:50 [WARNING] [Buildcraft] Pipe failed to load from NBT at 87,54,7104
31.07 00:19:50 [Server] SEVERE java.lang.OutOfMemoryError: PermGen space
31.07 00:19:50 [Server] INFO l
31.07 00:19:50 [Server] WARNING Pipe failed to load from NBT at 95,64,7099
31.07 00:19:50 [Server] SEVERE java.lang.OutOfMemoryError: PermGen space
31.07 00:19:48 [Server] WARNING Pipe failed to load from NBT at 87,54,7103
31.07 00:19:48 [Server] SEVERE java.lang.OutOfMemoryError: PermGen space
31.07 00:19:42 [Server] INFO at nallar.tickthreading.util.FakeServerThread.run(FakeServerThread.java:16)
31.07 00:19:42 [Server] INFO at nallar.tickthreading.minecraft.ThreadManager$1.run(ThreadManager.java:43)
31.07 00:19:42 [Server] INFO at nallar.tickthreading.minecraft.ThreadManager$2.run(ThreadManager.java:101)
31.07 00:19:42 [Server] INFO at nallar.tickthreading.minecraft.tickregion.TickRegion.run(TickRegion.java:35)
31.07 00:19:42 [Server] INFO at nallar.tickthreading.minecraft.tickregion.TileEntityTickRegion.doTick(TileEntityTickRegion.java:90)
31.07 00:19:42 [Server] INFO at com.shadwdrgn.soulshards.TESoulCage.g(TESoulCage.java:106)
31.07 00:19:42 [Server] INFO at lv.a(EntityList.java:114)
31.07 00:19:42 [Server] INFO at java.lang.reflect.Constructor.newInstance(Unknown Source)
31.07 00:19:42 [Server] INFO at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
31.07 00:19:42 [Server] INFO at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
31.07 00:19:42 [Server] INFO at sun.reflect.MethodAccessorGenerator.generateConstructor(Unknown Source)
31.07 00:19:42 [Server] INFO at sun.reflect.MethodAccessorGenerator.generate(Unknown Source)
31.07 00:19:42 [Server] INFO at java.security.AccessController.doPrivileged(Native Method)
31.07 00:19:42 [Server] INFO at sun.reflect.MethodAccessorGenerator$1.run(Unknown Sourc
 

nallar

New Member
Jul 29, 2019
270
0
0
ok, I'd really appreciate a solid answer on whats going on, this error seems to pop up everytime the server crashes every 20-40 minutes. I have the latest 1.4.7 Tickthreading installed also.

31.07 00:20:07 [Server] INFO Caused by: java.lang.OutOfMemoryError: PermGen space.

Set -XX:MaxPermSize=128m in your java options.
 

BreakingReality

New Member
Jul 29, 2019
26
0
0
31.07 00:20:07 [Server] INFO Caused by: java.lang.OutOfMemoryError: PermGen space.

Set -XX:MaxPermSize=128m in your java options.


ok but where exactly do i find my java options if I'm using a server provider to host my server, I'm not hosting the server myself..[DOUBLEPOST=1375261859][/DOUBLEPOST]And also does the crashes have anything to do with the soulshards mod? because this problem only started 2 days ago for some reason
and everything was working fine before. Keep in mind I never set any maxpermsize before the crashes happened either.
 

vince959

New Member
Jul 29, 2019
127
0
0
31.07 00:20:07 [Server] INFO Caused by: java.lang.OutOfMemoryError: PermGen space.

Set -XX:MaxPermSize=128m in your java options.


Yes, by adding that java option fixed the problem but may I ask why this is happening? I did not need this option to be added before.
 

saki2fifty

New Member
Jul 29, 2019
73
0
0
Yes, by adding that java option fixed the problem but may I ask why this is happening? I did not need this option to be added before.
http://plumbr.eu/blog/what-is-a-permgen-leak : :D

I've had to increase my Permgen space as well, and this too fixed my problem. I was curious was this meant, so I looked it up and it has something to do with the amount of "classes" stored exceeds the amount of ram allotted for it. I take it that this happens when you install more mods... more mods = more classes = more memory.

Or something like that...
 

saki2fifty

New Member
Jul 29, 2019
73
0
0
ok but where exactly do i find my java options if I'm using a server provider to host my server, I'm not hosting the server myself..[DOUBLEPOST=1375261859][/DOUBLEPOST]And also does the crashes have anything to do with the soulshards mod? because this problem only started 2 days ago for some reason
and everything was working fine before. Keep in mind I never set any maxpermsize before the crashes happened either.

If you aren't hosting it yourself, then you just might be out of luck. Look at whatever management gui console your provider gives you, and look for something that might say something like additional java "command line options" or additional "arguments". Again, they just may not have that option. If not, then ask them to increase it for you. Your crashes for now, are due to the Permgen error.
 

vince959

New Member
Jul 29, 2019
127
0
0
http://plumbr.eu/blog/what-is-a-permgen-leak : :D

I've had to increase my Permgen space as well, and this too fixed my problem. I was curious was this meant, so I looked it up and it has something to do with the amount of "classes" stored exceeds the amount of ram allotted for it. I take it that this happens when you install more mods... more mods = more classes = more memory.

Or something like that...

So it means that default perm size is less than 128m... and I can no longer use the default perm size to run the server since it's not enough.
 

saki2fifty

New Member
Jul 29, 2019
73
0
0
I have a question about the below. Is this how quickly the mobs will spawn, or the quantity?

# Mob spawning multiplier. Default is 1, can be a decimal.
D:mobSpawningMultiplier=1
 

nallar

New Member
Jul 29, 2019
270
0
0
I have a question about the below. Is this how quickly the mobs will spawn, or the quantity?

# Mob spawning multiplier. Default is 1, can be a decimal.
D:mobSpawningMultiplier=1

The quantity. Although increasing quantity will probably also increase spawn rate.
 

MinerDude333

New Member
Jul 29, 2019
49
0
0
I seem to have a crash relating to MineFactoryReloaded. I'm using build 185 for 1.5.2.
 

Attachments

  • crash-2013-08-01_09.41.19-server.txt
    83.7 KB · Views: 63