Как можно достичь 1000+ соединений, таких как blockchain.info?

На данный момент у blockchain.info есть более 1900 узлов, подключенных к их биткойн-клиенту.

Я запускал сервер m1.small ubuntu 12.04 и bitcoind в течение ~ 4 дней прямо сейчас без перезагрузки. Мой биткойный клиент по-прежнему показывает только максимум 60 соединений при выполнении команды «./bitcoind getinfo».

Как я могу достичь 1000+ соединений с моим клиентом bitcoind? И это «стоит того», по вашему мнению?

EDIT: я перезапустил свой биткойный клиент с параметрами -maxconnections = 1000 и -timeout = 15000, но после ~ 12 часов работы биткойна количество соединений составляет только до ~ 40. Похоже, я пока не могу максимизировать свой процессор, оперативную память или пропускную способность.

EDIT 2: Я не видел «связанного времени» в течение 8 часов в списке, предоставленном blockchain.info , чтобы говорит, что они должны перезапустить свой сервер каждые 8 ​​часов или около того. Либо это, либо соединения снижаются и обновляются через 8 часов? Я начинаю думать, что blockchain.info отслеживает IP-адреса, работающие с bitcoin в базе данных ... и предварительно подключается к ним каждый раз, когда перезагружается их биткойн. Я прав?

31 голос | спросил user3145 4 MarpmMon, 04 Mar 2013 12:45:47 +04002013-03-04T12:45:47+04:0012 2013, 12:45:47

6 ответов


10

У клиента биткойнов есть опция конфигурации maxconnections. Клиент, запущенный с помощью -maxconnections = N, позволит одновременно установить до N входящих соединений.

Возможно, вам может понадобиться увеличить тайм-аут соединения для многих попыток подключения с одного (возможно, недостаточно мощного) узла. Возможно, установите его как 15 секунд (15000 мс).

  

-timeout = Укажите время соединения в миллисекундах (по умолчанию: 5000)

[Изменить: ответ Питера Уйеля дает вам еще больше. -addnode позволит вам заставлять новые исходящие коннекции узлам, когда у вас есть их IP-адреса.]

ответил Stephen Gornick 5 MaramTue, 05 Mar 2013 00:43:50 +04002013-03-05T00:43:50+04:0012 2013, 00:43:50
18

Данные ответы не отвечают на вопрос. Несмотря на то, что может не иметь смысла достигать тысячи подключений, вот как это сделать на Debian. Вы хотите внести некоторые изменения в код и перекомпилировать биткойн:

Получить необходимые пакеты для компиляции:

$ aptitude install git make build-essential libssl-dev libboost-all-dev libdb-dev libdb++-dev libminiupnpc-dev

Клонировать репозиторий git (убедитесь, что версия самая последняя ветка ):

$ cd /usr/src
$ sudo git clone -b 0.8.4 https://github.com/bitcoin/bitcoin
$ cd bitcoin/src

Отредактируйте файл net.cpp:

@@ -27,7 +27,7 @@
 using namespace std;
 using namespace boost;

-static const int MAX_OUTBOUND_CONNECTIONS = 8;
+static const int MAX_OUTBOUND_CONNECTIONS = 1000;

 bool OpenNetworkConnection(const CAddress& addrConnect, CSemaphoreGrant *grantOutbound = NULL, const char *strDest = NULL, bool fOneShot = false);

@@ -1533,7 +1533,7 @@
             OpenNetworkConnection(CAddress(vserv[i % vserv.size()]), &grant);
             MilliSleep(500);
         }
-        MilliSleep(120000); // Retry every 2 minutes
+        MilliSleep(5000); // Retry every 5 seconds
     }
 }

1.) Изменяя MAX_OUTBOUND_CONNECTIONS, клиент будет подключаться, пока не достигнет 1000 проактивных подключений.

2.) Изменяя тайм-аут сна, новые соединения чаще проверяются.

Скомпилируйте и установите биткойн:

$ sudo make -f makefile.unix
$ sudo mv bitcoind /usr/bin

Не забудьте установить максимальные соединения в bitcoin.conf:

maxconnections=1000

Запустите биткойн и сделайте это. Клиент сделает очень много соединений очень быстро.

Отказ от ответственности: Как отметил Питер Уйль, это может повредить сети для запуска измененного клиента, подобного этому. Используйте это решение только для исследовательских целей, а не как постоянное решение.

ответил MorbZ 26 AM00000010000004331 2013, 01:59:43
16

Биткойн по умолчанию не будет содержать более 8 исходящих соединений, а -maxconnections управляет только количеством входящих подключений. Не стесняйтесь устанавливать это выше, но потребуется некоторое время, прежде чем другие присоединятся к вам в больших количествах.

Пожалуйста, не изменяйте это, так как нет необходимости. Подключаемые одноранговые сети в сети являются скудным ресурсом и необходимы для децентрализации. Если люди попытаются подключиться ко всем, как это делают некоторые сайты, мы очень скоро закончим.

Если вы являетесь торговцем или шахтером, вы, возможно, захотите установить несколько фиксированных подключений для доверенных других (см. параметр командной строки -addnode), но с большим количеством подключений не означает более сильную проверку (ссылочный клиент всегда проверяет все) или даже более быструю ретрансляцию (поскольку вы замедляете распространение новых блоков и транзакций всем своим сверстникам). Это в основном вопрос предоставления услуги сети.

ответил Pieter Wuille 5 MarpmTue, 05 Mar 2013 14:27:01 +04002013-03-05T14:27:01+04:0002 2013, 14:27:01
1

Зачем вам 1000+ соединений?

По умолчанию биткойн не может иметь более 125 подключений. Вам нужно запустить bitcoind с параметром -maxconnections=<n> или установить maxconnections=<n> в bitcoin.conf, чтобы иметь возможность подключаться к большему количеству сверстников.

ответил Nicolai 4 MarpmMon, 04 Mar 2013 22:31:39 +04002013-03-04T22:31:39+04:0010 2013, 22:31:39
1

Как никто, кажется, не упомянул об этом, я запишусь для будущей справки. Если ваш биткойный узел находится за маршрутизатором /NAT, вы можете подключаться только к другим, они не могут подключиться к вам. Предположим, что большинство людей находятся в этой ситуации, что делает большинство узлов недоступными (по крайней мере). Если вы откроете свой узел на своем маршрутизаторе, тогда каждый биткойный узел там сможет подключиться к вам, если они пожелают, а ваш узел сможет подключаться только к другим, открывшим свой порт. То же самое относится к Bittorrent и другим системам p2p.

ответил George 30 TueEurope/Moscow2014-12-30T21:02:13+03:00Europe/Moscow12bEurope/MoscowTue, 30 Dec 2014 21:02:13 +0300 2014, 21:02:13
-3

Чтобы проверить, разрешаете ли вы принимать входящие, используйте это: https://bitnodes.21.co Существует кнопка для проверки вашего IP-адреса, и если он приводит к зеленому, у вас будет неплохо иметь входящее соединение. Как только у вас это получилось, мне сказали, что у вас может быть больше исходящего соединения. Удачи.

ответил Dennis Ng 28 J0000006Europe/Moscow 2016, 17:08:51

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132