Thread pool Starvation y porque saber programar bien importa

Sdílet
Vložit
  • čas přidán 6. 09. 2024

Komentáře • 40

  • @NetMentor
    @NetMentor  Před 6 měsíci +2

    Twitter: twitter.com/NetMentorTW
    Blog: www.netmentor.es/entrada/thread-pool-starvation

  • @juanmanuelorjuelaacosta3230
    @juanmanuelorjuelaacosta3230 Před 6 měsíci +4

    SI usas itemDto.Result podria causar un Deadlock (por que estas intentado llamar algo sincrono dentro de un metodo asyncrono)

    • @kiquenet
      @kiquenet Před 6 měsíci

      solución?

    • @juanmanuelorjuelaacosta3230
      @juanmanuelorjuelaacosta3230 Před 6 měsíci

      @@kiquenet usar await

    • @kiquenet
      @kiquenet Před 2 měsíci

      @@juanmanuelorjuelaacosta3230
      // Antipattern
      var result = myAsyncMethod().Result;
      // Recommended Approach
      var result = await myAsyncMethod()

  • @andryos5145
    @andryos5145 Před 6 měsíci +1

    Interesante saberlo, y entender que lo importante es NO BLOQUEAR HILOS Y OPTIMIZAR SU PRONTA LIBERACION. Pero como bien dices, solo llegarás a analizarlo y a vivirlo cuando estés en un proyecto muy importantes con múltiples peticiones por segundo. Igual debería enseñarse como usar correctamente los Async await aunque nunca tengas un gran volumen de peticiones (aunque como todo, hay que aplicar ingeniería y saber como bien indicas si bloquear todo en uno o llamar con latencias)

  • @luisalbertoivetta1731
    @luisalbertoivetta1731 Před 6 měsíci +1

    yendo a las entrañas!!! muy buen video

  • @matiasperonetto
    @matiasperonetto Před 6 měsíci

    Que buen contenido!!

  • @HatsuneM_ALC
    @HatsuneM_ALC Před 24 dny

    Hola netmentor podrias hacer un video explicando la asincronia completa por favor? es un tema muy complicado diria yo porque hay muchas desinformacion mas que informacion vi el video que hiciste pero no esta muy completo espero leas mi comentario.gracias

    • @NetMentor
      @NetMentor  Před 24 dny

      Tengo uno
      czcams.com/video/zZ8cozxO22E/video.htmlsi=7JNAEXdOze-7UMQU

    • @HatsuneM_ALC
      @HatsuneM_ALC Před 24 dny

      @@NetMentor pero no hablas de hilos porque tengo entendido mas o menos que cuando se usa await se va a otro hilo ese proceso o algo parecido o podrias compartiorme alguna documentacion donde lo pueda aprender bien este tema gracias

    • @NetMentor
      @NetMentor  Před 24 dny

      @@HatsuneM_ALC no, cuando usas await el hilo va al thread pool si lo que esta sucediendo en tu app no es código (por ejemplo, buscar en la base de datos, esperar por una respuesta de la api, etc). Pero si todo lo que sucede en el proceso es sincrono, el await "no hace nada".
      eso hace que una api con 10 hilos, pueda administrar miles de llamadaápor minutos, sin el async/await serían cientos.

    • @HatsuneM_ALC
      @HatsuneM_ALC Před 23 dny

      ​@@NetMentor Hola una pregunta cuando llamamos un metodo async se ejecuta en paralelo esa tarea?osea algo asi
      public async Task GetById(UserI user)
      {
      var request = await _context.UserIs.FirstOrDefaultAsync(x => x.UserId == user.UserId);
      return user;
      }
      estoy diciendo que esto se ejecute en paralelo el _context.UserIs.FirstOrDefaultAsync(x => x.UserId == user.UserId);

    • @NetMentor
      @NetMentor  Před 23 dny

      @HatsuneM_ALC en paralelo con que? si solo tienes una consulta.
      Si la pregunta es si se ejecuta de forma asíncrona, la respuesta es si.
      Te recomiendo que te veas el otro video que enlacé

  • @FPontiDev
    @FPontiDev Před 6 měsíci +1

    Otro supervideo. Gracias

  • @dahoradqhora
    @dahoradqhora Před 6 měsíci

    Muy buen video como siempre. Muchas gracias :)

  • @stopPlannedObsolescence
    @stopPlannedObsolescence Před 6 měsíci

    por ejemplo en aws en ec2, se tiene un 4 nucleos, como configuras los hilos para cada docker container ? y que algun micro servicio container tenga mas prioridad de otro

    • @NetMentor
      @NetMentor  Před 6 měsíci

      cada nucleo son dos hilos, y respecto a docker, se puden configurar para que tengan mas o menos, pero si tienes mas de una app en EC2, o bien no necesitais EC2 o deberiais utilizar otras alternativas. (en mi opinion, sin saber lo que hay)

  • @caballerno
    @caballerno Před 6 měsíci

    Tal vez está pregunta sea algo básica, pero esto también puede provocar que una aplicación se cierre de la nada? Saludos.

    • @asiergarcia9286
      @asiergarcia9286 Před 6 měsíci +1

      No, cuando un hilo se queda bloqueado simplemente la app se queda colgada y no puede recibir mas peticiones hasta que se libere y se van encolando
      Una forma muy sencilla de verlo es con una aplicación de escritorio que se queda pillada
      Cuando una app se cierra de la "nada" es porque ha ocurrido una excepción no controlada que hace que se pete la aplicación
      Para eso tendrias que poner un try catch global, si es web, pues en un middleware, aunque en asp eso esta controlado

  • @jaaviladev
    @jaaviladev Před 6 měsíci

    tengo una duda, en Entity Framework, tenia entendido que no se podia asincronismo como tal, es decir capturando la tarea para hacer otra consulta sin esperar a que la primera culmine, es correcto?

    • @juanmanuelorjuelaacosta3230
      @juanmanuelorjuelaacosta3230 Před 6 měsíci

      EF soporta async creo que desde la primera version de EF core

    • @jaaviladev
      @jaaviladev Před 6 měsíci

      @@juanmanuelorjuelaacosta3230 Claro, entiendo que si se puede usar async pero no como se muestra en el video, es decir haciendo multiples consultas en "paralelo" sin esperar a que la primera termine, para ello antiguamente se creaba una instancia del dbcontext con using en cada consulta o usar lock para mantenerlo en uso único.

    • @NetMentor
      @NetMentor  Před 6 měsíci +1

      what? claro que se puede; no se que es lo que quieres decir, pero creo que estas mezclando cosas, el lock se hace para bloquear el acceso a recursos compartidos, ni idea de como teníás la bbdd, pero quizá era para hacer transacciones y teniais conexiónes directas con la bbdd en vez de usar EF o algo así.

    • @luisluzuriaga7361
      @luisluzuriaga7361 Před 4 měsíci

      @@NetMentor Creo que se refiere a que las tares asíncronas son tareas de IO / bloqueantes, y que hasta hace pocas versiones (creo que ahora sí se puede), había métodos de entity framework que no implementaban ASYNC, como por ejemplo un Delete, o un Update, ya que se es una operación inmediata, ejecutar y ya, que no esperaba respuesta.

  • @_PulpoPaul
    @_PulpoPaul Před 6 měsíci

    Que sistema operativo utilizas para programar en C#?

    • @josephmoreno9733
      @josephmoreno9733 Před 6 měsíci

      Yo uso Mac aunque lo detesto. Pero Windows tiene Visual Studio, pero .NET es cross platform.
      Un gran IDE es rider.

    • @NetMentor
      @NetMentor  Před 6 měsíci

      windows

    • @_PulpoPaul
      @_PulpoPaul Před 6 měsíci

      @@NetMentor Finalmente no te gustó el paso a Arch? O que pasó con eso?

    • @NetMentor
      @NetMentor  Před 6 měsíci +5

      Paso que creo contenido y digan lo que digan a Linux le falta para estar al nivel de Windows o Mac :/
      Cualquier problema en Arch son 10horas de buscar en foros 🤣

  • @cmargok
    @cmargok Před 6 měsíci +1

    soy el comentario[0] :D

  • @diegoimberti4398
    @diegoimberti4398 Před 6 měsíci

    Pero: “realmente” cuantos hilos puede soportar por ejemplo un servidor de una APII ? 10?
    Porque si tenemos un IIS con algún endpoint que tarde un par de segundos, un cálculo rápido me lleva a pensar que como mucho puede resolver 20 o 30 llamadas x minuto ???
    Si a eso le sumamos que normalmente una Api Puede tener 20 o 30 metodos… y que a veces un servidor tiene 4 o 5 apis… es todo un desastre!! Cual es la solución?

    • @NetMentor
      @NetMentor  Před 6 měsíci +1

      dependerá del procesador, pero por ejemplo yo tengo un ryzen 7 y tienen 2 por núcleo, asi que 16.
      luego ten en cuenta que si tienes todo async/await los hilos se van liberando y no están esperando, asi que aunque tarde 2 segundos o 10 alomejor "en el código" pasan 50 ms.

    • @diegoimberti4398
      @diegoimberti4398 Před 6 měsíci

      @@NetMentor si: entiendo. Muchísimas gracias… otra vez