Photon Server Delay in multiplayer

I am working on Carrom board game using Photon Server but when the Player One finishes his move and when the Player Twos moves comes it is taking Delay of about 10 seconds may be even more.
I don’t know whats going on here why it is taking this much of delay?

Below code is for the game starting

add Player Turn

Round Begin

Finished Turn

NextPlayer Change turn

HandleOwnerShip

Attachments can’t be found.
A 10 sec delay is so much that Photon usually times out in this timespan. So … something is odd.
Are you sure you don’t send everything in each frame?

private float TURN_DELAY = 20f;
private PunTurnManager turnManager;
public float OPPONENT_WAITING_TIME = 1f;

Add PlayerTurn Function:----------------
private void AddTunrManager()
{
turnManager = base.gameObject.AddComponent();
turnManager.TurnManagerListener = this;
TURN_DELAY = LevelManager.getInstance().turnTime;
LogFeedback("Turn time " + TURN_DELAY);
turnManager.TurnDuration = TURN_DELAY;
}

Round Begin Function:-----------------------
public void RoundBegin()
{
strikedAnyPucks = false;
isPlayerTurn = true;
isPlayerStriked = false;
timesup = false;
strikerScript.MakeStrikerStrike();
if (turnManager != null)
{
turnManager.BeginTurn();
}
}

FinishedTurn Function:---------------
public void FinishTurn()
{
isPlayerStriked = true;
timesup = true;
//WaitingForOpponent();
HideWaitingMessage();
}

HandleOwnerShip Function:------------------
private void HandleOwnerShip()
{
Player player = (playingPlayer != PhotonNetwork.MasterClient) ? PhotonNetwork.MasterClient : opponentPlayer;
ChangeOwnerShip(player);
playingPlayer = player;
base.photonView.RPC(“PlayerTurn”, player, null);
//base.photonView.RPC(“UpdateLoader”, RpcTarget.All, PhotonNetwork.LocalPlayer.ActorNumber);
}

BeginNewRound Function:-------
private void NextPlayerTurn()
{
timesup = false;
disableStrikerMover();
strikedAnyPucks = false;
isPlayerTurn = false;
SynchPucks();
strikerAnimator.photonView.RPC(“MoveStrikerOut”, RpcTarget.All, (!PhotonNetwork.IsMasterClient) ? restPositionTop.position : restPositionBottom.position);
MoveStrikerHandlerToCenter();
base.photonView.RPC(“HandleOwnerShip”, PhotonNetwork.MasterClient, null);
base.photonView.RPC(“UpdateLoader”, RpcTarget.All, PhotonNetwork.LocalPlayer.ActorNumber);
//hardik
// Invoke(“WaitingForOpponent”, OPPONENT_WAITING_TIME);
RoundComplete();
}

private float TURN_DELAY = 20f;
private PunTurnManager turnManager;
public float OPPONENT_WAITING_TIME = 1f;

Add PlayerTurn Function:----------------
private void AddTunrManager()
{
turnManager = base.gameObject.AddComponent();
turnManager.TurnManagerListener = this;
TURN_DELAY = LevelManager.getInstance().turnTime;
LogFeedback("Turn time " + TURN_DELAY);
turnManager.TurnDuration = TURN_DELAY;
}

Round Begin Function:-----------------------
public void RoundBegin()
{
strikedAnyPucks = false;
isPlayerTurn = true;
isPlayerStriked = false;
timesup = false;
strikerScript.MakeStrikerStrike();
if (turnManager != null)
{
turnManager.BeginTurn();
}
}

FinishedTurn Function:---------------
public void FinishTurn()
{
isPlayerStriked = true;
timesup = true;
//WaitingForOpponent();
HideWaitingMessage();
}

HandleOwnerShip Function:------------------
private void HandleOwnerShip()
{
Player player = (playingPlayer != PhotonNetwork.MasterClient) ? PhotonNetwork.MasterClient : opponentPlayer;
ChangeOwnerShip(player);
playingPlayer = player;
base.photonView.RPC(“PlayerTurn”, player, null);
//base.photonView.RPC(“UpdateLoader”, RpcTarget.All, PhotonNetwork.LocalPlayer.ActorNumber);
}

BeginNewRound Function:-------
private void NextPlayerTurn()
{
timesup = false;
disableStrikerMover();
strikedAnyPucks = false;
isPlayerTurn = false;
SynchPucks();
strikerAnimator.photonView.RPC(“MoveStrikerOut”, RpcTarget.All, (!PhotonNetwork.IsMasterClient) ? restPositionTop.position : restPositionBottom.position);
MoveStrikerHandlerToCenter();
base.photonView.RPC(“HandleOwnerShip”, PhotonNetwork.MasterClient, null);
base.photonView.RPC(“UpdateLoader”, RpcTarget.All, PhotonNetwork.LocalPlayer.ActorNumber);
//hardik
// Invoke(“WaitingForOpponent”, OPPONENT_WAITING_TIME);
RoundComplete();
}

Did you solve this problem? If so, how did you figure it out, and what was the solution?