wakeConnections: Randomize connections before scanning them
gear/__init__.py: Modified Server.wakeConnections() so that it randomizes the list of active connections before sending out NOOP's to them. This will hopefully spread workload across machines more evenly when there are multiple workers per machine. Reference: https://phabricator.wikimedia.org/T258630 Change-Id: I05dcb9fa383f3aefc8b5b1bb9dd8b3ff6ff7f37d
This commit is contained in:
parent
089471c8fb
commit
a160d10735
@ -15,6 +15,7 @@
|
||||
import errno
|
||||
import logging
|
||||
import os
|
||||
import random
|
||||
import select
|
||||
import six
|
||||
import socket
|
||||
@ -3295,7 +3296,13 @@ class Server(BaseClientServer):
|
||||
|
||||
def wakeConnections(self, job=None):
|
||||
p = Packet(constants.RES, constants.NOOP, b'')
|
||||
for connection in self.active_connections:
|
||||
|
||||
# Use a randomized copy of active_connections to try
|
||||
# to spread workload across the machines that workers are on.
|
||||
conns = self.active_connections[:]
|
||||
random.shuffle(conns) # Modifies the list
|
||||
|
||||
for connection in conns:
|
||||
if connection.state == 'SLEEP':
|
||||
if ((job and job.name in connection.functions) or
|
||||
(job is None)):
|
||||
|
Loading…
x
Reference in New Issue
Block a user