Tengo una instancia de RDS que me está costando mucho dinero. De la actividad de mi cuenta en Amazon veo que la instancia ha tenido alrededor de 800,000,000 de solicitudes de IO en los últimos 7 días.
Para darle una pequeña perspectiva, mi aplicación solo recibe alrededor de 6,000 visitas únicas al día y no hace tantas conexiones a la base de datos.
Entonces, ¿qué es exactamente una solicitud de IO y por qué ese número sería tan sobrenatural? Estoy dispuesto a hacer lo que sea necesario para que mi aplicación reduzca ese costo si es necesario, pero no estoy seguro de lo que realmente está sucediendo.
Agradecería tus pensamientos.
mysql
io
amazon-rds
Abe
fuente
fuente
Respuestas:
Ah, Amazon Web Services. Uno de los mayores enlaces de dinero disponibles. Muy bien, pero no siempre es barato. En realidad, casi nunca es barato, y siempre es difícil calcular los gastos.
Una solicitud de E / S es una operación de disco. Ya sea una lectura o una escritura, básicamente se le está cobrando la cantidad de datos que obtiene de su sistema. Es una locura.
Puede estimar las solicitudes de IO que está haciendo, mirando iostat.
800,000,000 IOrequests en 7 días. Eso es ~ = 1300 IOPS. Guau. Esa es una actuación perversamente rápida.
Si realmente desea reducir lo que esto le está costando, tal vez sea hora de ver si RDS es realmente la mejor opción para su aplicación y presupuesto de proyecto.
Si solo tiene 6k visitas al día, podría mejorar su costo y rendimiento con un servidor dedicado (preferiblemente 2 de ellos, uno para DB, uno para servicios web). En realidad, es un poco más difícil hacer esa llamada, ya que no ha dicho demasiado sobre su aplicación.
fuente
Los "servicios en la nube" no significan que las cosas te va a costar centavos. Básicamente, una solicitud de E / S es cualquier cosa (es decir, una base de datos o una página de índice) que se necesitaba obtener del disco. Si tiene una base de datos grande y consultas utilizando escaneos completos de tablas, esto no es sorprendente. Puede considerar buscar consultas utilizando columnas no indexadas para el filtrado al habilitar la opción de registrar las consultas "no indexadas" en el registro lento de MySQL y agregar índices para las columnas apropiadas. Como no tiene la opción de editar el archivo de configuración directamente, use la configuración del grupo de parámetros RDS para establecer
log-queries-not-using-indexes
y consultar en lamysql.slow_log
tabla las entradas de registro.Además, considere ejecutar el script de iniciación de ajuste de MySQL desde su instancia de AWS contra la instancia de la base de datos para un análisis de rendimiento general para ver si una instancia más grande ayudaría debido a una mayor cantidad de memoria disponible para el almacenamiento en caché, aliviando la carga en el disco. El script evalúa una serie de parámetros de configuración y contadores de rendimiento para proporcionar información sobre posibles cuellos de botella y proporcionar algunas recomendaciones genéricas.
fuente
&
a su código. Claramente, nadie lo había perfilado nunca)