diff --git a/server/server.js b/server/server.js
index 7c44411..b187404 100644
--- a/server/server.js
+++ b/server/server.js
@@ -150,7 +150,7 @@ let indexHTML = fs.readFileSync("./dist/index.html").toString();
                 if (user) {
                     debug("afterLogin")
 
-                    await afterLogin(socket, user)
+                    afterLogin(socket, user)
 
                     debug("afterLogin ok")
 
@@ -178,7 +178,7 @@ let indexHTML = fs.readFileSync("./dist/index.html").toString();
             let user = await login(data.username, data.password)
 
             if (user) {
-                await afterLogin(socket, user)
+                afterLogin(socket, user)
 
                 callback({
                     ok: true,
@@ -561,7 +561,7 @@ let indexHTML = fs.readFileSync("./dist/index.html").toString();
         debug("check auto login")
         if (await setting("disableAuth")) {
             console.log("Disabled Auth: auto login to admin")
-            await afterLogin(socket, await R.findOne("user"))
+            afterLogin(socket, await R.findOne("user"))
             socket.emit("autoLogin")
         } else {
             debug("need auth")
@@ -621,6 +621,8 @@ async function sendMonitorList(socket) {
 }
 
 async function sendNotificationList(socket) {
+    const timeLogger = new TimeLogger();
+
     let result = [];
     let list = await R.find("notification", " user_id = ? ", [
         socket.userID,
@@ -631,6 +633,9 @@ async function sendNotificationList(socket) {
     }
 
     io.to(socket.userID).emit("notificationList", result)
+
+    timeLogger.print("Send Notification List");
+
     return list;
 }
 
@@ -639,24 +644,27 @@ async function afterLogin(socket, user) {
     socket.join(user.id)
 
     let monitorList = await sendMonitorList(socket)
-
     sendNotificationList(socket)
 
-    // Delay a bit, so that it let the main page to query the data first, since SQLite can process one sql at the same time only.
-    // For example, query the edit data first.
-    setTimeout(async () => {
-        for (let monitorID in monitorList) {
-            sendHeartbeatList(socket, monitorID);
-            sendImportantHeartbeatList(socket, monitorID);
-            Monitor.sendStats(io, monitorID, user.id)
-        }
-    }, 500);
+    await sleep(500);
+
+    for (let monitorID in monitorList) {
+        await sendHeartbeatList(socket, monitorID);
+    }
+
+    for (let monitorID in monitorList) {
+        await sendImportantHeartbeatList(socket, monitorID);
+    }
+
+    for (let monitorID in monitorList) {
+        await Monitor.sendStats(io, monitorID, user.id)
+    }
 }
 
 async function getMonitorJSONList(userID) {
     let result = {};
 
-    let monitorList = await R.find("monitor", " user_id = ? ", [
+    let monitorList = await R.find("monitor", " user_id = ? ORDER BY weight DESC, name", [
         userID,
     ])
 
@@ -786,6 +794,8 @@ async function sendHeartbeatList(socket, monitorID) {
     }
 
     socket.emit("heartbeatList", monitorID, result)
+
+    timeLogger.print(`[Monitor: ${monitorID}] sendHeartbeatList`)
 }
 
 async function sendImportantHeartbeatList(socket, monitorID) {