¿Cuántas transacciones por segundo puede procesar el hardware básico?

Estoy ejecutando geth en una red privada con el siguiente comando:

geth --datadir firstserver --mine --minerthreads 1 --networkid 1300 --rpcport 8000  --rpcaddr 127.0.0.1 --port 30303 --rpcapi="db,eth,net,web3,personal,admin" --rpc --maxpeers 3 --nodiscover  --cache=2048 --memprofilerate=100 --targetgaslimit 210000000000  console

Tengo 8 GB de RAM y una CPU de cuatro núcleos. Estoy ejecutando 1 hilo minero.

Cuando ejecuto 24 transacciones por segundo desde jmeter, el sistema funciona bien, pero cuando lo aumento a 28 transacciones por segundo, el sistema se congela.

El uso de la CPU es del 370%, el uso de la memoria es del 90% y no puedo hacer ningún trabajo en ese servidor. Quiero obtener más de 200 transacciones por segundo, ¿cómo puedo lograrlo? ¿Qué debo hacer para alcanzar tales velocidades?

He movido la discusión al chat para una mejor legibilidad, no deje un comentario aquí, pero únase a la sala de chat vinculada en este comentario para discutir el tema.
Debe ser más específico en cuanto a con qué se realiza la transacción. Una transacción que realiza transacciones con un contrato requiere más tiempo de CPU que una transacción que realiza transacciones con una cuenta vacía. ¿Podría proporcionar más detalles para que pueda responder más adecuadamente a su pregunta?
@JeffreyW. cualquier tipo de transacción. supongamos que estoy ejecutando una función para actualizar la variable del contrato.
@Himanshusharma no puede decir "ninguna transacción". Los contratos grandes y complejos requieren más tiempo para ejecutarse que los pequeños. Es como preguntar "¿cuántos programas caben en 1 GB de RAM?" Depende del tamaño del programa. La transacción en todo momento no es una buena medida para ethereum debido a su naturaleza arbitraria.
Supongo que depende de si estás usando HDD o SSD. Por lo general, HDD es el cuello de botella
Esto estaba sucediendo debido a web3. Debido a que cada confirmación de transacción toma tiempo, por lo que web3 las mantiene todas por settimeout y verifica la confirmación. entonces, en este caso, si hago muchas transacciones, la cola de tiempo de espera establecido se llena y causa mucho daño. Esto fue 6 meses antes.

Respuestas (1)

La pregunta es antigua, pero supongo que merece una respuesta general. Para tales problemas, existen principalmente dos posibilidades:

  • o no tienes suficiente RAM

  • o no tiene suficiente poder de cómputo (que puede aumentar a través de más CPU)

Para decidir entre esos dos problemas, puede observar el uso de la CPU y la memoria, pero en algunos casos (como el suyo) no es suficiente. Entonces, una buena manera de saberlo es mirar los datos mientras extrae (por ejemplo, usando htop o top). Al principio, sus CPU deben estar al 100% cada una y el uso de su memoria debe aumentar lentamente. Entonces, en algún momento, debería ocurrir uno de los siguientes:

  1. su uso de RAM se acerca al 80-100%, su uso de intercambio comienza a aumentar y su uso de CPU disminuye .

  2. su uso de RAM se mantiene constante, cada uso de CPU se mantiene cerca del 100%.

En el primer caso, no tienes suficiente RAM. En el segundo caso, no tiene suficiente potencia de cálculo.

En su caso, dijo que logró un uso de CPU del 360%. Si se trata de un uso promedio (según lo generado por el tiempo de GNU), entonces diría que es un problema de RAM (debe tener> = 390% de lo contrario).

Espero que ayude.