Zapytałem, jak utworzyć serwer TCP, który wysyła dane przez cały czas tutaj: Julia TCP select i działa dobrze. Teraz mam nowy problem, więc pomyślałem o rozpoczęciu nowej rozmowy.Serwer i połączenie Julia TCP
zrobiłem tego rodzaju połączenia jak na zdjęciu:
Więc Nadawca wysyła czasami coś do serwera 1 i serwer 1 odczytuje go i aktualizacje co do wysłania do serwera 2 i Server 2 oblicza liczb i komunikuje się z C program.
Oto mój serwer 1 Kod:
notwaiting = true
message = zeros(10,14)
server = listen(5001)
connection = connect(5003)
while true
if notwaiting
notwaiting = false
# Runs accept async (does not block the main thread)
@async begin
sock = accept(server)
reply= read(sock, Float64, 11)
message[:,convert(Int64,reply[1])] = reply[2:11]
write(connection,reshape(message,140))
global notwaiting = true
end
end
write(connection,reshape(message,140))
if message[1,1] == -1.0
close(connection)
close(server)
break
end
sleep(0.01) # slow down the loop
end
Sender jest:
Connection2= connect(5001)
message = [2.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0]
write(Connection2,message)
close(Connection2)
i Server 2 jest tak:
function Server2_connection()
println("Waiting for connection")
server2 = listen(5003)
conn_2 = accept(server2)
while isopen(conn_2)
try
message_server2 = round(read(conn_2,Float64,140),3)
ins_matrix = reshape(message_server2[1:140],10,14)
catch e
println("caught an error $e")
break
end
end
println("Connection closed")
close(conn)
close(server)
end
Problemem jest to, że wszystko razem jest naprawdę ciężki. Mam na myśli to, że mogę wysłać 2 wiadomości od nadawcy i wszystko działa bardzo wolno. Mogę uruchomić całą sprawę 10-15, a następnie zamarza. Wszystkie połączenia działają, ale naprawdę wolno. Moje pytanie brzmi: czy czegoś brakuje, czy mam coś, co sprawia, że serwery naprawdę zwalniają? Jak mogę zakodować ten lepszy sposób?
Każdy szczególny powód, dla którego nie używasz [narzędzi równoległych Julii] (http://docs.julialang.org/en/latest/manual/parallel-computing/) do zdalnego wywoływania/zdalnej oceny? –
Nie mogłem odtworzyć spowolnienia ani zamrożenia (wykonanie testu przez około 5 minut i wysłanie 10 wiadomości). Zrobiłem test ze wszystkimi programami z Julią 0.5 + rc3 na systemie Windows i nie było powolności. Nawet przenoszenie serwera serwer2 do komputera Mac (połączonego przez sieć Wi-Fi) 1 i 2 działa poprawnie. Może to problem z wersją lub środowiskiem? (np .: OS, sprzęt, sieć, ...) – Gomiero
Co masz na myśli? Czy możesz wyjaśnić dokładniej, co masz na myśli @FelipeLema –