|
|
|
Скорость соединения клиент/сервер
|
|||
|---|---|---|---|
|
#18+
Привет всем! Возникла проблема. Написал для теста простое клиент-серверное приложение на сокетах без NIO. Исходный код приводить не буду, т.к. он стандартен на все 100%. Сервер и клиент шлют друг другу пакеты по 40 байта. Замеряется пинг, между приемом и ответом на сервере. Так вот, когда сервер и клиент на localhost'е все работает очень быстро пинг 0-12 мс. Но стоит запустить сервер на удаленном компе (но в той же локальной сети), как пинг возрастает до 300 мс, введение двух сокетных соединений по разным портам - одно для приема, другое для отправки помогло уменьшить пинг до 200 мс. Но это все равно МНОГО. Так вот, никто не в курсе каких действительно цифр стоит ждать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2006, 12:31:47 |
|
||
|
Скорость соединения клиент/сервер
|
|||
|---|---|---|---|
|
#18+
А как измеряете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2006, 12:39:21 |
|
||
|
Скорость соединения клиент/сервер
|
|||
|---|---|---|---|
|
#18+
Примерно так: while(true){ long LastTime = System.currentTimeMillis(); System.out.println("ping is"); System.out.println(pr-LastTime); LastTime = pr; ...тут прием 40 байт ...тут отправка 40 байт } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2006, 13:03:13 |
|
||
|
Скорость соединения клиент/сервер
|
|||
|---|---|---|---|
|
#18+
Ну и по скОльким циклам приём/отправка сделан вывод о 200 мс ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2006, 13:11:14 |
|
||
|
Скорость соединения клиент/сервер
|
|||
|---|---|---|---|
|
#18+
ну блин... не знаю, много (100-1000)... могу тебя уверить что в подсчетах все правильно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2006, 13:36:17 |
|
||
|
Скорость соединения клиент/сервер
|
|||
|---|---|---|---|
|
#18+
Вот даже такой, ужасный с точки зрения оптимизации, код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. Даёт результаты: Solaris server - Windows client AVG time 0.877 ms Windows server - Solaris client AVG time 0.015 ms JDK6 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2006, 14:59:49 |
|
||
|
Скорость соединения клиент/сервер
|
|||
|---|---|---|---|
|
#18+
Странно, вроде точно такой же код писал, а он работал медленно... буду разбираться... Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2006, 06:36:01 |
|
||
|
Скорость соединения клиент/сервер
|
|||
|---|---|---|---|
|
#18+
Тогда еще вопрос :) Поразбирался на свежую голову, и пришел к следующему выводу: у меня данные отправлялись как бы в два приема. Сначала делал os.write(byte[4]) - это отправлял типа заголовник, который говорит, о размере основного пакета. А уже потом слал основной пакет, так же os.write(byte[mainPack.length]). И получается, если делать отправку больше чем за один write, то лаг возрастает до 300 мс. А отпрака одним write'ом дает лаг в среднем 6 мс, что приемлемо. Это такие особенности реализации сокетов на Java или как? Может есть способ накапливать данные, а потом скажем вызововом flush() их отпралять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2006, 07:52:36 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=34224813&tid=2147084]: |
0ms |
get settings: |
16ms |
get forum list: |
28ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
64ms |
get topic data: |
21ms |
get forum data: |
6ms |
get page messages: |
89ms |
get tp. blocked users: |
2ms |
| others: | 324ms |
| total: | 564ms |

| 0 / 0 |
