اطلاعیه

بستن
No announcement yet.

100% شدن درصد cpu هنگام اجرای اسکریپت

بستن
این موضوع بسته شده است.
X
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

  • 100% شدن درصد cpu هنگام اجرای اسکریپت

    سلام ؛ من اسکریپت زیر رو نوشتم که ای پی هایی که بیشتر از 50 مگ ترافیک استفاده کردند رو به یه ادرس لیست اضافه کنم :
    کد:
    /queue simple    
     :for i from=1 to=254 do={
           :if ([get [find target-addresses="192.168.7.$i/32"] total-bytes] > 5000000) do={
          / ip firewall address-list add address="192.168.7.$i" list=No_internet
           }
    
          }
    ولی وقتی اسکریپت رو ران میکنم درصد سی پی یو میاد رو 100% و تقریبا 3 دقیقه طول میکشه تا برسه به اخر حلقه .
    میخواستم بدونم مشکل از کجا هست که انقدر این اسکریپت رو سنگین میکنه ؟
    ممنون.
    پ.ن : روی rb750gl ران میشه.
    آخرین ویرایش توسط headshoter; در تاریخ/ساعت 2014/03/05, 11:07 AM.

  • #2
    نوشته شده توسط headshoter مشاهده پست
    سلام ؛ من اسکریپت زیر رو نوشتم که ای پی هایی که بیشتر از 50 مگ ترافیک استفاده کردند رو به یه ادرس لیست اضافه کنم :
    کد:
    /queue simple     :for i from=1 to=254 do={
           :if ([get [find target-addresses="192.168.7.$i/32"] total-bytes] > 5000000) do={
          / ip firewall address-list add address="192.168.7.$i" list=No_internet
           }
    
          }
    ولی وقتی اسکریپت رو ران میکنم درصد سی پی یو میاد رو 100% و تقریبا 3 دقیقه طول میکشه تا برسه به اخر حلقه .
    میخواستم بدونم مشکل از کجا هست که انقدر این اسکریپت رو سنگین میکنه ؟
    ممنون.
    پ.ن : روی rb750gl ران میشه.
    والا من اینو رو 411ah ران کردم. سی پی یو که آخ نگفت.
    خود اسکریپتت هم کار نمیکنه یعنی خروجی نمیده. برا اینکه تست کنم فکر یه فیلمو دانلود کردم !!!!

    کامنت


    • #3
      نوشته شده توسط salamnet مشاهده پست
      والا من اینو رو 411ah ران کردم. سی پی یو که آخ نگفت.
      خود اسکریپتت هم کار نمیکنه یعنی خروجی نمیده. برا اینکه تست کنم فکر یه فیلمو دانلود کردم !!!!
      عجیبه ، چون تو این اسکریپتی که گذاشتم اگه بیشتر از 5 میگ دانلود بشه ، ای پی رو ادد میکنه به ادرس لیست ،
      شما مطمئنی رنج ای پی تون با اسکریپتی که ران کردید یکی هست ؟
      یه مورد دیگه ، توی بعضی ROSها باید به جای target-addresses از target استفاده بشه ، شما این رو یه بار امتحان کنید :
      کد:
      /queue simple
      :for i from=1 to=254 do={ \
      :if ([get [find target="192.168.7.$i/32"] total-bytes ] != 50000000) do={ \
      /ip firewall address-list add address=("192.168.7.$i") list=MyList } }

      کامنت


      • #4
        چند تا یوزر وصله؟چند تا queue داری؟

        کامنت


        • #5
          نوشته شده توسط tapesh مشاهده پست
          چند تا یوزر وصله؟چند تا queue داری؟
          30-40 تا یوزر هستند که ای پی هاشون از 30 تا 240 هست. کیو هم 210 تا دارم.
          آخرین ویرایش توسط headshoter; در تاریخ/ساعت 2014/03/05, 04:56 PM.

          کامنت


          • #6
            از tools==>profile ببین چه سرویسی cpu را پر میکنه

            کامنت


            • #7
              نوشته شده توسط pooyesh مشاهده پست
              از tools==>profile ببین چه سرویسی cpu را پر میکنه
              عکس وقتی که اسکریپت اجرا میشه :
              Queue Script.jpg

              وقتی که اجرا نمیشه :

              Idle.jpg

              کامنت


              • #8
                اسکریپت مناسب نیست،من روی میکروتیک 1100AH که 180 تا انلاین بود تست زدم و cpu 100 درصد شد

                کامنت


                • #9
                  نوشته شده توسط admin مشاهده پست
                  اسکریپت مناسب نیست،من روی میکروتیک 1100AH که 180 تا انلاین بود تست زدم و cpu 100 درصد شد
                  بله ؛ یه نمونه اسکریپت بهینه واسه این کار :

                  کد:
                  :foreach queueTest in=[ /queue simple find where total-bytes > 50000 ] do={
                   /ip firewall address-list add address=[/queue simple get $queueTest target] list=No_internet; };
                  ولی واقعا اون اسکریپت قبلی چرا انقدر سربار الکی داشت واسه سی پی یو ؟
                  آخرین ویرایش توسط headshoter; در تاریخ/ساعت 2014/03/06, 01:24 PM.

                  کامنت


                  • #10
                    دقیق نمی تونم بگم ولی در کل در اسکریپت نویسی هر چه تعداد شرط ها و پارامترها بیشتر باشد,پروسس بیشتری نیاز دارد
                    در قبلی هم یک باز queue ها را بر اساس target باید پیدا می کرد و بعد براساس مصرف میسنجید

                    کامنت


                    • #11
                      متغیر queueTest چیکار میکنه؟

                      کامنت


                      • #12
                        خروجی این دستور
                        /queue simple find where total-bytes > 50000
                        ریختیم توی queuetest

                        کامنت

                        در حال انجام ...
                        X