diff --git a/extra/tarantool_box b/extra/tarantool_box
index 8e18f355d10ea7885367cde32c19470f56a71f79..4822d928dee165d5cc16473fc46cffc7dfc54cee 100755
--- a/extra/tarantool_box
+++ b/extra/tarantool_box
@@ -46,16 +46,37 @@ start() {
         return ${RETVAL}
 }
 
+terminate() {
+	timeout=${1}
+	pid=${2}
+	kill ${pid} >/dev/null 2>&1
+	sleep ${timeout}
+	ps -p ${pid} >/dev/null 2>&1
+	if [ $? -eq 0 ]; then
+		sleep 10;
+		ps -p ${pid} >/dev/null 2>&1
+		if [ $? -eq 0 ]; then
+			kill -9 ${pid}
+			sleep 3
+			ps -p 0 ${pid} >/dev/null 2>&1
+			if [ $? -eq 0 ]; then
+                		echo_failure
+				exit 1
+			fi
+		fi 
+	fi
+}
+
 stop() {
         echo -n $"Stopping $INST: "
         if [ -f ${WRAP_PIDFILE} ]
         then
-                kill $(cat ${WRAP_PIDFILE}) >/dev/null 2>&1
+		terminate 1 $(cat ${WRAP_PIDFILE})
                 rm -f ${WRAP_PIDFILE} >/dev/null 2>&1
         fi
         if [ -f ${PIDFILE} ]
         then
-                kill $(cat ${PIDFILE}) >/dev/null 2>&1
+		terminate 3 $(cat ${PIDFILE})
                 rm -f ${PIDFILE} >/dev/null 2>&1
         fi
         echo_success
@@ -63,9 +84,8 @@ stop() {
         return ${RETVAL}
 }
 
-restart(){
+restart() {
         stop
-        sleep 3
         start
 }