diff --git a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java
index 75217e17bbf5c2381a4cd8f5102a04934163f82c..55401f938fc0b3424b925e828161a9dfe8b69d46 100644
--- a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java
+++ b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java
@@ -17,6 +17,8 @@
  */
 package de.thm.arsnova.socket;
 
+import com.codahale.metrics.annotation.Metered;
+import com.codahale.metrics.annotation.Timed;
 import com.corundumstudio.socketio.AckRequest;
 import com.corundumstudio.socketio.Configuration;
 import com.corundumstudio.socketio.SocketConfig;
@@ -131,6 +133,7 @@ public class ARSnovaSocketIOServer implements ARSnovaSocket, NovaEventVisitor {
 
 		server.addEventListener("setFeedback", Feedback.class, new DataListener<Feedback>() {
 			@Override
+			@Timed(name = "setFeedbackEvent.onData")
 			public void onData(final SocketIOClient client, final Feedback data, final AckRequest ackSender) {
 				final User u = userService.getUser2SocketId(client.getSessionId());
 				if (u == null) {
@@ -154,6 +157,7 @@ public class ARSnovaSocketIOServer implements ARSnovaSocket, NovaEventVisitor {
 
 		server.addEventListener("setSession", Session.class, new DataListener<Session>() {
 			@Override
+			@Timed(name = "setSessionEvent.onData")
 			public void onData(final SocketIOClient client, final Session session, final AckRequest ackSender) {
 				final User u = userService.getUser2SocketId(client.getSessionId());
 				if (null == u) {
@@ -183,6 +187,7 @@ public class ARSnovaSocketIOServer implements ARSnovaSocket, NovaEventVisitor {
 				de.thm.arsnova.entities.transport.InterposedQuestion.class,
 				new DataListener<de.thm.arsnova.entities.transport.InterposedQuestion>() {
 			@Override
+			@Timed(name = "readInterposedQuestionEvent.onData")
 			public void onData(
 					SocketIOClient client,
 					de.thm.arsnova.entities.transport.InterposedQuestion question,
@@ -213,6 +218,7 @@ public class ARSnovaSocketIOServer implements ARSnovaSocket, NovaEventVisitor {
 				LearningProgressOptions.class,
 				new DataListener<LearningProgressOptions>() {
 			@Override
+			@Timed(name = "setLearningProgressOptionsEvent.onData")
 			public void onData(SocketIOClient client, LearningProgressOptions progressOptions, AckRequest ack) {
 				final User user = userService.getUser2SocketId(client.getSessionId());
 				final de.thm.arsnova.entities.Session session = sessionService.getSessionInternal(progressOptions.getSessionKeyword(), user);
@@ -226,11 +232,13 @@ public class ARSnovaSocketIOServer implements ARSnovaSocket, NovaEventVisitor {
 
 		server.addConnectListener(new ConnectListener() {
 			@Override
+			@Timed
 			public void onConnect(final SocketIOClient client) { }
 		});
 
 		server.addDisconnectListener(new DisconnectListener() {
 			@Override
+			@Timed
 			public void onDisconnect(final SocketIOClient client) {
 				if (
 						userService == null
@@ -500,6 +508,7 @@ public class ARSnovaSocketIOServer implements ARSnovaSocket, NovaEventVisitor {
 
 	@Async
 	@Override
+	@Timed(name = "visit.NewAnswerEvent")
 	public void visit(NewAnswerEvent event) {
 		final String sessionKey = event.getSession().getKeyword();
 		this.reportAnswersToLecturerQuestionAvailable(event.getSession(), new Question(event.getQuestion()));
@@ -518,6 +527,7 @@ public class ARSnovaSocketIOServer implements ARSnovaSocket, NovaEventVisitor {
 
 	@Async
 	@Override
+	@Timed(name = "visit.DeleteAnswerEvent")
 	public void visit(DeleteAnswerEvent event) {
 		final String sessionKey = event.getSession().getKeyword();
 		this.reportAnswersToLecturerQuestionAvailable(event.getSession(), new Question(event.getQuestion()));
@@ -528,6 +538,7 @@ public class ARSnovaSocketIOServer implements ARSnovaSocket, NovaEventVisitor {
 
 	@Async
 	@Override
+	@Timed(name = "visit.PiRoundDelayedStartEvent")
 	public void visit(PiRoundDelayedStartEvent event) {
 		final String sessionKey = event.getSession().getKeyword();
 		broadcastInSession(sessionKey, "startDelayedPiRound", event.getPiRoundInformations());
@@ -535,6 +546,7 @@ public class ARSnovaSocketIOServer implements ARSnovaSocket, NovaEventVisitor {
 
 	@Async
 	@Override
+	@Timed(name = "visit.PiRoundEndEvent")
 	public void visit(PiRoundEndEvent event) {
 		final String sessionKey = event.getSession().getKeyword();
 		broadcastInSession(sessionKey, "endPiRound", event.getPiRoundEndInformations());
@@ -542,6 +554,7 @@ public class ARSnovaSocketIOServer implements ARSnovaSocket, NovaEventVisitor {
 
 	@Async
 	@Override
+	@Timed(name = "visit.PiRoundCancelEvent")
 	public void visit(PiRoundCancelEvent event) {
 		final String sessionKey = event.getSession().getKeyword();
 		broadcastInSession(sessionKey, "cancelPiRound", event.getQuestionId());