Windows进程CPU、内存等资源限制

Windows自身没有提供类似Linux cgroup的能力来限制进程或进程组的资源占用,进程CPU/IO/内存/网络等资源的控制只能由自己实现。目前已有第三方的实现,主要是限制进程CPU的占用,如文档 < 21 Best Ways to Limit the CPU Usage of a Process > 所描述的BES,Process Tamer等软件。自Windows 8及Server 2012开始Windows系统有提供以job为单位的CPU占用及内存上限设置,之前的版本则只能以进程或线程为单位进行限制。

进程CPU占用限制方案

即时轮询系统所有进程(线程)的CPU占用,当发现所设定进程有超标时强制暂停进程所有线程的执行,然后在适当的时机再恢复执行。其中所涉及技术点:

进程CPU占用查询 GetProcessTimes

BOOL GetProcessTimes(
  [in]  HANDLE     hProcess,
  [out] LPFILETIME lpCreationTime,
  [out] LPFILETIME lpExitTime,
  [out] LPFILETIME lpKernelTime,
  [out] LPFILETIME lpUserTime
);

此函数可以获取进程从创建至当前的总运行时间及总的CPU时间,(KernelTime + UserTime) < 系统CPU数 * (当前时间 - CreationTime)

线程CPU占用查询 GetThreadTimes

BOOL GetThreadTimes(
  [in]  HANDLE     hThread,
  [out] LPFILETIME lpCreationTime,
  [out] LPFILETIME lpExitTime,
  [out] LPFILETIME lpKernelTime,
  [out] LPFILETIME lpUserTime
);

QueryThreadCycleTime可以提供更精准的CPU时间数据,单位为CPU时钟周期

BOOL QueryThreadCycleTime(
  [in]  HANDLE   ThreadHandle,
  [out] PULONG64 CycleTime
);

线程暂停及恢复

Windows平台没有提供暂停整个进程的支持函数,只能以线程为单位来操作,即SuspendThread及ResumeThread:

DWORD SuspendThread(
  [in] HANDLE hThread
);
DWORD ResumeThread(
  [in] HANDLE hThread
);

CPU亲和性设置: SetProcessAffinityMask

BOOL SetProcessAffinityMask(
  [in] HANDLE    hProcess,
  [in] DWORD_PTR dwProcessAffinityMask
);

此函数可以限定进程及其所有线程所能使用的CPU,故一定程序上亦限定了进程最大的系统CPU占用率。

DWORD_PTR SetThreadAffinityMask(
  [in] HANDLE    hThread,
  [in] DWORD_PTR dwThreadAffinityMask
);

此函数可单独限制特定线程的CPU亲和性。

进程优先级设置: SetPriorityClass

优先级解决的是优先运行及退让CPU的问题,本质上并不能限定CPU占用,只是优先级高于当前任务的忙碌的时候,当前进程会主动退让CPU 线程优先级设置:SetThreadPriority

BOOL SetThreadPriority(
  [in] HANDLE hThread,
  [in] int    nPriority
);

Job Objects

Windows系统提供了Job的概念用以管理多个进程,可以限制Job对象内所有进程及期线程的CPU核心占用、CPU占用及内存分配上限等,均通过SetInformationJobObject来实现,具体的CPU限制由JOBOBJECT_CPU_RATE_CONTROL_INFORMATION管理,内存限制则由JOBOBJECT_EXTENDED_LIMIT_INFORMATION来管理。

BOOL SetInformationJobObject(
  [in] HANDLE             hJob,
  [in] JOBOBJECTINFOCLASS JobObjectInformationClass,
  [in] LPVOID             lpJobObjectInformation,
  [in] DWORD              cbJobObjectInformationLength
);

需要注意的是CPU占用设置只有Windows 8及Server 2012之后的版本有效。

CPU Sets

此部分只限定了CPU Affinity属性

实验验证

可以直接利用开源项目go-winjob验证,验证系统Windows 8 x64,go-winjob git repo: https://github.com/kolesnikovae/go-winjob

验证程序

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

void main(int argc, char *argv[])
{
        unsigned long total = 0, count = 0, i = 0;

        while (1) {
                if (malloc(1024)) {
                        total += 1024;
                        count++;
                }
                if (!(++i &amp; 4095))
                        printf(&quot;alloc: %u size: %u bytes\n&quot;, count, total);
    }
}

无限制

在无限制的情况下,此进程会占满一个CPU核心,commit内存总占用达2G CPUStress unlimited

单一进程

在设定CPU上限16%及内存16M上限之后,结果如下: CPUStress single process examples/job_object.go按如下修改:

var limits = []winjob.Limit{
        winjob.WithBreakawayOK(),
        winjob.WithKillOnJobClose(),
        winjob.WithActiveProcessLimit(3),
        winjob.WithProcessTimeLimit(10 * time.Second),
        winjob.WithCPUHardCapLimit(1600),        // 16%
        winjob.WithProcessMemoryLimit(16 &lt;&lt; 20), // 16MB
        winjob.WithWriteClipboardLimit(),
}

const defaultCommand = &quot;.\\CPUStress.exe&quot;

多进程(双进程)

将winjob.WithProcessMemoryLimit 改为 winjob.WithJobMemoryLimit,后者表示此job内所有进程要占用的总内存限制:

var limits = []winjob.Limit{
        winjob.WithBreakawayOK(),
        winjob.WithKillOnJobClose(),
        winjob.WithActiveProcessLimit(3),
        winjob.WithProcessTimeLimit(10 * time.Second),
        winjob.WithCPUHardCapLimit(1600),    // 16%
        winjob.WithJobMemoryLimit(16 &lt;&lt; 20), // 16MB
        winjob.WithWriteClipboardLimit(),
}

验证结果如下: CPUStress 2-processes CPUStress 2-processes

winjob example代码:

// +build windows

package main

import (
        &quot;encoding/json&quot;
        &quot;log&quot;
        &quot;os&quot;
        &quot;os/exec&quot;
        &quot;os/signal&quot;
        &quot;time&quot;

        &quot;golang.org/x/sys/windows&quot;

        &quot;github.com/kolesnikovae/go-winjob&quot;
)

var limits = []winjob.Limit{
        winjob.WithBreakawayOK(),
        winjob.WithKillOnJobClose(),
        winjob.WithActiveProcessLimit(3),
        winjob.WithProcessTimeLimit(10 * time.Second),
        winjob.WithCPUHardCapLimit(1600),    // 16%
        winjob.WithJobMemoryLimit(16 &lt;&lt; 20), // 16MB
        winjob.WithWriteClipboardLimit(),
}

const defaultCommand = &quot;.\\CPUStress.exe&quot;
const stressCommand  = &quot;.\\CPUStressX64.exe&quot;

func main() {
        job, err := winjob.Create(&quot;&quot;, limits...)
        if err != nil {
                log.Fatalf(&quot;Create: %v&quot;, err)
        }

        cmd := exec.Command(defaultCommand)
        cmd.Stderr = os.Stderr
        cmd.SysProcAttr = &amp;windows.SysProcAttr{
                CreationFlags: windows.CREATE_SUSPENDED,
        }
        if err := cmd.Start(); err != nil {
                log.Fatalf(&quot;Start: %v&quot;, err)
        }

        stress := exec.Command(stressCommand)
        stress.Stderr = os.Stderr
        stress.SysProcAttr = &amp;windows.SysProcAttr{
                CreationFlags: windows.CREATE_SUSPENDED,
        }
        if err := stress.Start(); err != nil {
                log.Fatalf(&quot;Start: %v&quot;, err)
        }

        s := make(chan os.Signal, 1)
        signal.Notify(s, os.Interrupt)

        c := make(chan winjob.Notification)
        subscription, err := winjob.Notify(c, job)
        if err != nil {
                log.Fatalf(&quot;Notify: %v&quot;, err)
        }

        done := make(chan struct{})
        go func() {
                defer close(done)
                ticker := time.NewTicker(time.Second * 5)
                defer ticker.Stop()
                var counters winjob.Counters
                for {
                        select {
                        case &lt;-s:
                                log.Println(&quot;Closing job object&quot;)
                                if err := job.Close(); err != nil {
                                        log.Fatal(err)
                                }
                                log.Println(&quot;Closing subscription&quot;)
                                if err := subscription.Close(); err != nil {
                                        log.Fatal(err)
                                }
                                return

                        case n, ok := &lt;-c:
                                if ok {
                                        log.Printf(&quot;Notification: %#v\n&quot;, n)
                                } else if err := subscription.Err(); err != nil {
                                        log.Fatalf(&quot;Subscription: %v&quot;, err)
                                }

                        case &lt;-ticker.C:
                                if err := job.QueryCounters(&amp;counters); err != nil {
                                        log.Fatalf(&quot;QueryCounters: %v&quot;, err)
                                }
                                b, err := json.MarshalIndent(counters, &quot;&quot;, &quot;\t&quot;)
                                if err != nil {
                                        log.Fatal(err)
                                }
                                log.Printf(&quot;Counters: \n%s\n&quot;, b)
                        }
                }
        }()

        if err := job.Assign(cmd.Process); err != nil {
                log.Fatalf(&quot;Assign: %v&quot;, err)
        }
        if err := winjob.Resume(cmd); err != nil {
                log.Fatalf(&quot;Resume: %v&quot;, err)
        }

        if err := job.Assign(stress.Process); err != nil {
                log.Fatalf(&quot;Assign: %v&quot;, err)
        }
        if err := winjob.Resume(stress); err != nil {
                log.Fatalf(&quot;Resume: %v&quot;, err)
        }

        if err := cmd.Wait(); err != nil {
                log.Fatalf(&quot;Wait: %v&quot;, err)
        }
        if err := stress.Wait(); err != nil {
                log.Fatalf(&quot;Wait: %v&quot;, err)
        }

        // Wait for a signal.
        &lt;-done
}

参考链接

  1. 21 Best Ways to Limit the CPU Usage of a Process
  2. MSDN: Windows Process and Thread Functions
  3. MSDN: CPU Sets
  4. GetThreadTimes

228,531 条评论

  1. Когда я понял, что моя сестра больше не может справляться сама. Мы перепробовали всё — и уговоры, и скандалы, и даже запирали её дома. Мы нашли службу наркологической помощи в Волгограде, где работают с такими случаями. круглосуточная наркологическая помощь в Волгограде — это дало нам шанс начать всё заново. Мы снова видим её улыбку, слышим её голос. Это был последний шаг, но он оказался правильным. круглосуточная наркологическая клиника [url=https://alkogolizm.narkologicheskaya-pomoshh-v-volgograde17.ru]круглосуточная наркологическая клиника[/url] Это может спасти жизнь для нашего города. Если ваш близкий не может справиться с зависимостью — наркологическая помощь может стать шансом на новую жизнь. Наркологическая помощь — это реальное решение проблемы!

  2. Когда зависимость забирает человека, он перестаёт быть собой. Тогда мы поняли: нужна клиника, стационар, профессиональная помощь. Мы нашли наркологическую клинику в Балашихе, где работают с такими случаями. стационарное лечение алкоголизма в Балашихе — что сохранило нашу семью. И через два месяца мы увидели результат. Он вышел из клиники другим человеком — ясным, спокойным, снова начал улыбаться. наркологическая помощь балашиха [url=https://pohmelye.narkologicheskaya-klinika-balashikha.ru]https://pohmelye.narkologicheskaya-klinika-balashikha.ru[/url] Сохраните, поделитесь, не потеряйте для Московской области. Если ваш близкий не может справиться с зависимостью — стационар даёт шанс на новую жизнь. Наркологическая клиника — это реальное решение проблемы!

  3. Я понял, что без профессиональной помощи он не справится. Но когда он перестал выходить из дома и начал терять вес. И нашли ту, которая дала результат. лечение зависимостей в клинике — что сохранило нашу семью. Был под круглосуточным контролем врачей. Он вышел из клиники другим человеком — ясным, спокойным, снова начал улыбаться. лечение алкоголизма люберцы [url=https://alkogolizm.narkologicheskaya-klinika-moskva-eip.ru]лечение алкоголизма люберцы[/url] Это может спасти жизнь для нашего города. Если ваш близкий не может справиться с зависимостью — стационар даёт шанс на новую жизнь. Наркологическая клиника — это реальное решение проблемы!

  4. Его тошнило, голова раскалывалась, руки тряслись. Но ничего не работало, ему становилось только хуже. Случайно наткнулась на сайт, где предлагали капельницы от похмелья с выездом на дом. снятие алкогольной интоксикации — это спасло наш выходной. Врач приехал, осмотрел мужа, поставил капельницу с препаратами. Цена оказалась вполне разумной. капельница от похмелья стоимость [url=https://alkogolizm.kapelnicza-ot-pokhmelya-uzao.ru]капельница от похмелья стоимость[/url] По ссылке — подробная информация для Московской области. Каждый час на счету. Капельница от похмелья — это реальная помощь, которая работает!

  5. Я понял, что без профессиональной помощи он не справится. Но когда он перестал выходить из дома и начал терять вес. Мы начали искать клинику в Люберцах, где работают с зависимостями. анонимная наркологическая помощь — что вернуло брата к жизни. Был под круглосуточным контролем врачей. Мы снова стали семьёй. наркологическая помощь в люберцах [url=https://kodirovanie.narkologicheskaya-klinika-moskva-eip.ru]https://kodirovanie.narkologicheskaya-klinika-moskva-eip.ru[/url] Это может спасти жизнь для Люберец. Если ваш близкий не может справиться с зависимостью — стационар даёт шанс на новую жизнь. Наркологическая клиника — это реальное решение проблемы!

  6. Мы просто смотрели, как он умирает. Мы уже перестали верить, что сможем его вытащить. И приехали! Врач сразу понял, что делать. выезд нарколога в Казани — это дало нам второй шанс. Через пару часов он открыл глаза и улыбнулся. Брат уснул спокойным сном. нарколог выведение из запоя [url=https://narkolog.vyvod-iz-zapoya-na-domu-kazan.ru]https://narkolog.vyvod-iz-zapoya-na-domu-kazan.ru[/url] По ссылке — подробная информация для нашего города. Каждый час на счету. Вывод из запоя на дому — это реальность, и она работает!

  7. Мы перепробовали всё, чтобы помочь брату. Алкоголь забирал его с каждым днём. И это действительно сработало. процедура кодировки в Казани — что дало ему шанс начать всё заново. Мы снова видим его улыбку, слышим его голос. Спасибо врачам за их профессионализм и терпение. закодироваться от алкоголизма [url=https://zapoy.kodirovanie-ot-alkogolizma-kazan.ru]https://zapoy.kodirovanie-ot-alkogolizma-kazan.ru[/url] По ссылке — подробная информация для нашего города. Если ваш близкий не может справиться с зависимостью — кодирование может стать шансом на новую жизнь. Кодирование от алкоголизма — это реальное решение проблемы!

  8. Когда я увидел, что мой брат больше не может справляться сам. И нашли ту, которая дала результат. стационарное выведение из запоя — что сохранило нашу семью. Работал с психологами, посещал групповые занятия. Мы снова стали семьёй. цена на вывод из запоя в стационаре [url=https://narkolog.vyvod-iz-zapoya-v-staczionare-volgograd.ru]https://narkolog.vyvod-iz-zapoya-v-staczionare-volgograd.ru[/url] Сохраните, поделитесь, не потеряйте для юга России. Если ваш близкий не может справиться с зависимостью — стационар даёт шанс на новую жизнь. Вывод из запоя в стационаре — это реальное решение проблемы!

  9. Когда я понял, что моя сестра больше не может справляться сама. Но она срывалась снова и снова. Врачи объяснили, как проходит лечение, и мы решились. анонимная наркологическая клиника — это было то, что действительно помогло. Она вернулась к работе, к семье, к жизни. Спасибо врачам за их профессионализм и терпение. наркологическая клиника клиника помощь [url=https://alkogolizm.narkologicheskaya-pomoshh-v-volgograde17.ru]https://alkogolizm.narkologicheskaya-pomoshh-v-volgograde17.ru[/url] Это может спасти жизнь для нашего города. Не ждите, пока станет поздно. Наркологическая помощь — это реальное решение проблемы!

  10. Когда зависимость забирает человека, он перестаёт быть собой. Мы перепробовали всё — и капельницы, и кодирование, и уговоры. Врачи взялись за него, и это был наш последний шанс. лечение зависимостей в клинике — это было единственное, что реально помогло. Он прошёл полный курс детоксикации и психотерапии. Спасибо врачам за их труд и терпение. реабилитация наркомании балашиха [url=https://pohmelye.narkologicheskaya-klinika-balashikha.ru]https://pohmelye.narkologicheskaya-klinika-balashikha.ru[/url] Сохраните, поделитесь, не потеряйте для Подмосковья. Если ваш близкий не может справиться с зависимостью — стационар даёт шанс на новую жизнь. Наркологическая клиника — это реальное решение проблемы!

  11. Когда я не мог смотреть на его мучения — я понял, что нужно срочно действовать. Как его трясёт и он не может говорить. В больницу он не хотел, а уговоры не действовали. Я позвонил, и мне ответили: «Приедем через час». срочная детоксикация — это дало нам второй шанс. Убрал интоксикацию, восстановил давление. Брат уснул спокойным сном. Это реально работает. нарколог на дом анонимно круглосуточно [url=https://narkolog-na-dom-v-kazani.ru]https://narkolog-na-dom-v-kazani.ru[/url] Пригодится, если случится беда для республики. Если ваш близкий в запое — не ждите. Нарколог на дом — это реальность, и она работает!

  12. Его тошнило, голова раскалывалась, руки тряслись. И начала искать врача на дом. Позвонила, объяснила ситуацию, и мне сказали, что врач будет через час. помощь при тяжёлом похмелье — это спасло наш выходной. Вечером он был полностью в порядке. Анонимно, быстро и без лишних бумаг. капельницы на дому от похмелья [url=https://narkolog.kapelnicza-ot-pokhmelya-uzao.ru]капельницы на дому от похмелья[/url] По ссылке — подробная информация для Подмосковья. Если ваш близкий не может прийти в себя после запоя — не ждите. Капельница от похмелья — это реальная помощь, которая работает!

  13. Когда я увидел, что мой брат потерял контроль над своей жизнью. Мы поняли: это уже не просто «пьёт», это болезнь. Мы начали искать клинику в Люберцах, где работают с зависимостями. лечение зависимостей в клинике — это было единственное, что реально помогло. Он прошёл полный курс детоксикации и психотерапии. Мы снова стали семьёй. реабилитация наркомании люберцы [url=https://alkogolizm.narkologicheskaya-klinika-moskva-eip.ru]реабилитация наркомании люберцы[/url] По ссылке — подробная информация для Люберец. Если ваш близкий не может справиться с зависимостью — стационар даёт шанс на новую жизнь. Наркологическая клиника — это реальное решение проблемы!

  14. Я начал искать способ, который реально поможет. Но она срывалась снова и снова. Мы нашли службу наркологической помощи в Волгограде, где работают с такими случаями. анонимная наркологическая клиника — это вернуло сестру к жизни. Она вернулась к работе, к семье, к жизни. Спасибо врачам за их профессионализм и терпение. срочная наркологическая помощь [url=https://alkogolizm.narkologicheskaya-pomoshh-v-volgograde17.ru]https://alkogolizm.narkologicheskaya-pomoshh-v-volgograde17.ru[/url] Там все контакты и условия для нашего города. Если ваш близкий не может справиться с зависимостью — наркологическая помощь может стать шансом на новую жизнь. Наркологическая помощь — это реальное решение проблемы!

  15. И мы смотрели на это, чувствуя свою беспомощность. И тогда мы поняли: нужен стационар, клиника, профессиональная помощь. Мы нашли наркологическую клинику в Люберцах, где работают с тяжёлыми случаями. лечение зависимостей в клинике — это было единственное, что реально помогло. Был под круглосуточным контролем врачей. Спасибо врачам за их труд и терпение. клиника лечения от алкоголизма в Люберцах [url=https://narkologicheskaya-klinika-moskva-eip.ru]https://narkologicheskaya-klinika-moskva-eip.ru[/url] Сохраните, поделитесь, не потеряйте для нашего города. Не ждите, пока станет поздно. Наркологическая клиника — это реальное решение проблемы!

  16. Мой брат перестал выходить из дома, перестал общаться с семьёй. Тогда мы поняли: нужна клиника, стационар, профессиональная помощь. Мы нашли наркологическую клинику в Балашихе, где работают с такими случаями. анонимная наркологическая помощь — что вернуло брата к жизни. И через два месяца мы увидели результат. Он вышел из клиники другим человеком — ясным, спокойным, снова начал улыбаться. наркологический центр балашиха [url=https://pohmelye.narkologicheskaya-klinika-balashikha.ru]https://pohmelye.narkologicheskaya-klinika-balashikha.ru[/url] Это может спасти жизнь для Балашихи. Если ваш близкий не может справиться с зависимостью — стационар даёт шанс на новую жизнь. Наркологическая клиника — это реальное решение проблемы!

  17. Когда человек, которого ты любишь, не может прийти в себя после запоя — это страшное чувство. Он пил несколько дней, а потом просто не мог встать. Сказал, что они ставят капельницы и быстро снимают похмелье. снятие интоксикации на дому — это вернуло отца в нормальное состояние. Вечером он был полностью в порядке. Цена оказалась вполне разумной. капельницы от похмелья что капают [url=https://zapoy.kapelnicza-ot-pokhmelya-uzao.ru]капельницы от похмелья что капают[/url] Сохраните, поделитесь, не потеряйте для Московской области. Каждый час на счету. Капельница от похмелья — это реальная помощь, которая работает!

  18. Мы долго не хотели признавать, что мой брат болен. Он не ел, не спал, не говорил. И приехали! Врач сразу понял, что делать. выезд нарколога в Казани — это дало нам второй шанс. Врач приехал, осмотрел его. Мы расплатились, и врач уехал. выведение из запоя на дому [url=https://narkolog.vyvod-iz-zapoya-na-domu-kazan.ru]выведение из запоя на дому[/url] Пригодится, если случится беда для Казани. Каждый час на счету. Вывод из запоя на дому — это реальность, и она работает!

  19. Я понял, что без стационара нам не обойтись. И нашли ту, которая дала результат. стационарное выведение из запоя — что вернуло брата к жизни. Был под круглосуточным контролем врачей. Спасибо врачам за их труд и терпение. вывести из запоя в стационаре [url=https://narkolog.vyvod-iz-zapoya-v-staczionare-volgograd.ru]вывести из запоя в стационаре[/url] Это может спасти жизнь для области. Не ждите, пока станет поздно. Вывод из запоя в стационаре — это реальное решение проблемы!

  20. Когда я увидел, что мой брат потерял контроль над своей жизнью. Но когда он перестал выходить из дома и начал терять вес. И нашли ту, которая дала результат. анонимная наркологическая помощь — что вернуло брата к жизни. Он прошёл полный курс детоксикации и психотерапии. Мы снова стали семьёй. лечение наркозависимости люберцы [url=https://kodirovanie.narkologicheskaya-klinika-moskva-eip.ru]лечение наркозависимости люберцы[/url] Там все контакты и условия для нашего города. Не ждите, пока станет поздно. Наркологическая клиника — это реальное решение проблемы!

  21. Он пил два дня, а потом просто не мог встать. Я испугалась, что это может быть опасно. Позвонила, объяснила ситуацию, и мне сказали, что врач будет через час. помощь при тяжёлом похмелье — это спасло наш выходной. Врач приехал, осмотрел мужа, поставил капельницу с препаратами. Всё честно и без обмана. капельница при похмелье цена [url=https://narkolog.kapelnicza-ot-pokhmelya-uzao.ru]https://narkolog.kapelnicza-ot-pokhmelya-uzao.ru[/url] По ссылке — подробная информация для нашего города. Если ваш близкий не может прийти в себя после запоя — не ждите. Капельница от похмелья — это реальная помощь, которая работает!

  22. Я начал искать способ, который реально поможет. Тогда я решил: нужна профессиональная помощь. Мы нашли службу наркологической помощи в Волгограде, где работают с такими случаями. Наркологическая помощь — это дало нам шанс начать всё заново. Он вернулся к работе, к семье, к жизни. Это был последний шаг, но он оказался правильным. платная наркологическая клиника [url=https://kapelnica.narkologicheskaya-pomoshh-v-volgograde17.ru]https://kapelnica.narkologicheskaya-pomoshh-v-volgograde17.ru[/url] Это может спасти жизнь для Волгограда. Если ваш близкий не может справиться с зависимостью — наркологическая помощь может стать шансом на новую жизнь. Наркологическая помощь — это реальное решение проблемы!

  23. Но он срывался снова и снова. Мы просто смотрели, как он разрушает себя. Тогда мы решились на кодирование в клинике в Казани. анонимное кодирование от алкоголя — что вернуло брата к жизни. Он прошёл процедуру, и уже несколько месяцев держится. Спасибо врачам за их профессионализм и терпение. кодировка от алкоголя в казани цены [url=https://zapoy.kodirovanie-ot-alkogolizma-kazan.ru]кодировка от алкоголя в казани цены[/url] Это может спасти жизнь для республики. Не ждите, пока станет поздно. Кодирование от алкоголизма — это реальное решение проблемы!

  24. Когда алкоголь стал его единственным смыслом. Он пил уже несколько лет, и мы просто смирились. И нашли ту, которая дала результат. анонимная наркологическая помощь — это было единственное, что реально помогло. И через два месяца мы увидели результат. Мы снова стали семьёй. платная наркологическая клиника люберцы [url=https://alkogolizm.narkologicheskaya-klinika-moskva-eip.ru]платная наркологическая клиника люберцы[/url] Сохраните, поделитесь, не потеряйте для нашего города. Если ваш близкий не может справиться с зависимостью — стационар даёт шанс на новую жизнь. Наркологическая клиника — это реальное решение проблемы!

  25. Мой отец пил годами, и мы просто не знали, как ему помочь. Кодирование давало лишь временный эффект. Врачи взялись за отца, и это был наш последний шанс. лечение зависимостей в клинике — что вернуло отца к жизни. Он прошёл полный курс детоксикации и психотерапии. Спасибо врачам за их труд и терпение. наркологическая клиника люберцы [url=https://narkologicheskaya-klinika-moskva-eip.ru]наркологическая клиника люберцы[/url] Там все контакты и условия для Подмосковья. Не ждите, пока станет поздно. Наркологическая клиника — это реальное решение проблемы!

  26. Когда я не мог смотреть на его мучения — я понял, что нужно срочно действовать. Я испугался, что потеряю его навсегда. Пытался вызвать скорую — но они просто развели руками. Соседка посоветовала: «Вызови нарколога на дом, они выводят из запоя круглосуточно». Нарколог на дом — это дало нам второй шанс. Поставил капельницу. Мы расплатились, и врач уехал. Всё честно и без скрытых платежей. экстренная наркологическая помощь на дому [url=https://narkolog-na-dom-v-kazani.ru]https://narkolog-na-dom-v-kazani.ru[/url] Пригодится, если случится беда для Казани. Звоните, помогайте, спасайте. Нарколог на дом — это реальность, и она работает!

  27. Когда человек, которого ты любишь, не может прийти в себя после запоя — это страшное чувство. Мы перепробовали всё — и рассол, и таблетки. Мы уже хотели вызывать скорую, но сосед посоветовал вызвать нарколога на дом. быстрая детоксикация — это спасло нас от больницы. Через пару часов он уже мог сидеть и пить чай. Цена оказалась вполне разумной. снять похмелье капельницей [url=https://zapoy.kapelnicza-ot-pokhmelya-uzao.ru]снять похмелье капельницей[/url] По ссылке — подробная информация для Мытищ. Если ваш близкий не может прийти в себя после запоя — не ждите. Капельница от похмелья — это реальная помощь, которая работает!

  28. Я начал искать способ, который реально поможет. Тогда я решил: нужна профессиональная помощь. Мы нашли службу наркологической помощи в Волгограде, где работают с такими случаями. выезд нарколога на дом — это дало нам шанс начать всё заново. Он прошёл курс лечения, и уже несколько месяцев держится. Спасибо врачам за их профессионализм и терпение. помощь нарколога круглосуточно [url=https://kapelnica.narkologicheskaya-pomoshh-v-volgograde17.ru]https://kapelnica.narkologicheskaya-pomoshh-v-volgograde17.ru[/url] По ссылке — подробная информация для Волгограда. Не ждите, пока станет поздно. Наркологическая помощь — это реальное решение проблемы!

  29. Я понял, что без стационара нам не обойтись. И нашли ту, которая дала результат. круглосуточная наркологическая помощь — это было единственное, что реально помогло. И через два месяца мы увидели результат. Он вышел из клиники другим человеком — ясным, спокойным, снова начал улыбаться. вывод из запоя стационар цены [url=https://narkolog.vyvod-iz-zapoya-v-staczionare-volgograd.ru]вывод из запоя стационар цены[/url] По ссылке — подробная информация для юга России. Если ваш близкий не может справиться с зависимостью — стационар даёт шанс на новую жизнь. Вывод из запоя в стационаре — это реальное решение проблемы!

  30. Запой следовал за запоем, а просветы становились всё короче. Кодирование не помогало, таблетки не работали. стационарное лечение алкоголизма в Люберцах — это был наш последний шанс, и он сработал. Он прошёл полный курс детоксикации и психотерапии. Он вышел из клиники другим человеком — ясным, спокойным, снова начал улыбаться. капельница от наркотиков в люберцах [url=https://kapelnica.narkologicheskaya-klinika-moskva-eip.ru]https://kapelnica.narkologicheskaya-klinika-moskva-eip.ru[/url] Там все контакты и условия для Подмосковья. Если ваш близкий не может справиться с зависимостью — стационар даёт шанс на новую жизнь. Наркологическая клиника — это реальное решение проблемы!

  31. Думали, что он сам справится, что это просто период. Каждый день я заходил к нему и боялся, что он не дышит. И приехали! Врач сразу понял, что делать. капельница от алкоголя на дому — это вернуло брата к жизни. Врач приехал, осмотрел его. Анонимно, без учёта, без лишних вопросов. нарколог выведение из запоя [url=https://narkolog.vyvod-iz-zapoya-na-domu-kazan.ru]https://narkolog.vyvod-iz-zapoya-na-domu-kazan.ru[/url] Сохраните, поделитесь, не потеряйте для Казани. Если ваш близкий в запое — не ждите. Вывод из запоя на дому — это реальность, и она работает!

  32. Мы перепробовали всё, чтобы помочь брату. Алкоголь забирал его с каждым днём. И это действительно сработало. анонимное кодирование от алкоголя — что дало ему шанс начать всё заново. Он прошёл процедуру, и уже несколько месяцев держится. Спасибо врачам за их профессионализм и терпение. адрес кодирования от алкоголизма [url=https://zapoy.kodirovanie-ot-alkogolizma-kazan.ru]https://zapoy.kodirovanie-ot-alkogolizma-kazan.ru[/url] По ссылке — подробная информация для столицы Татарстана. Если ваш близкий не может справиться с зависимостью — кодирование может стать шансом на новую жизнь. Кодирование от алкоголизма — это реальное решение проблемы!

  33. Мы не знали, что делать, когда мой муж не мог прийти в себя после корпоратива. И начала искать врача на дом. Позвонила, объяснила ситуацию, и мне сказали, что врач будет через час. выезд нарколога в Мытищах — это спасло наш выходной. Врач приехал, осмотрел мужа, поставил капельницу с препаратами. Цена оказалась вполне разумной. капельница от похмелья анонцентр [url=https://narkolog.kapelnicza-ot-pokhmelya-uzao.ru]капельница от похмелья анонцентр[/url] Пригодится, если случится беда для Московской области. Каждый час на счету. Капельница от похмелья — это реальная помощь, которая работает!

  34. Когда я увидел, что мой брат потерял контроль над своей жизнью. Мы поняли: это уже не просто «пьёт», это болезнь. Мы начали искать клинику в Люберцах, где работают с зависимостями. лечение зависимостей в клинике — что вернуло брата к жизни. Работал с психологами, посещал групповые занятия. Спасибо врачам за их труд и терпение. наркологическая помощь в люберцах [url=https://kodirovanie.narkologicheskaya-klinika-moskva-eip.ru]https://kodirovanie.narkologicheskaya-klinika-moskva-eip.ru[/url] По ссылке — подробная информация для Люберец. Если ваш близкий не может справиться с зависимостью — стационар даёт шанс на новую жизнь. Наркологическая клиника — это реальное решение проблемы!

  35. Когда я увидел, что мой брат больше не может справляться сам. Мы искали клинику в Волгограде, где работают с тяжёлыми случаями. лечение алкоголизма в стационаре Волгограда — это было единственное, что реально помогло. Он прошёл полный курс детоксикации и психотерапии. Спасибо врачам за их труд и терпение. лечение от запоя в стационаре [url=https://narkolog.vyvod-iz-zapoya-v-staczionare-volgograd.ru]https://narkolog.vyvod-iz-zapoya-v-staczionare-volgograd.ru[/url] По ссылке — подробная информация для юга России. Не ждите, пока станет поздно. Вывод из запоя в стационаре — это реальное решение проблемы!

  36. Когда алкоголь стал его единственным смыслом жизни. Но он срывался снова и снова. Мы нашли службу наркологической помощи в Волгограде, где работают с такими случаями. анонимная наркологическая клиника — это вернуло брата к жизни. Он прошёл курс лечения, и уже несколько месяцев держится. Это был последний шаг, но он оказался правильным. помощь нарколога круглосуточно [url=https://kapelnica.narkologicheskaya-pomoshh-v-volgograde17.ru]https://kapelnica.narkologicheskaya-pomoshh-v-volgograde17.ru[/url] По ссылке — подробная информация для нашего города. Не ждите, пока станет поздно. Наркологическая помощь — это реальное решение проблемы!

  37. Он перестал следить за собой, потерял работу. Кодирование не помогало, таблетки не работали. анонимная наркологическая помощь — это дало нам надежду. Работал с психологами, посещал групповые занятия. Спасибо врачам за их труд и терпение. платная наркологическая клиника в люберцах [url=https://kapelnica.narkologicheskaya-klinika-moskva-eip.ru]платная наркологическая клиника в люберцах[/url] По ссылке — подробная информация для Подмосковья. Не ждите, пока станет поздно. Наркологическая клиника — это реальное решение проблемы!

  38. Когда он лежит бледный, с трясущимися руками — это страшное чувство. Мы перепробовали всё — и рассол, и таблетки. Сказал, что они ставят капельницы и быстро снимают похмелье. Капельница от похмелья — это было то, что нужно. Через пару часов он уже мог сидеть и пить чай. Анонимно, быстро и без лишних бумаг. снять похмелье капельницей [url=https://zapoy.kapelnicza-ot-pokhmelya-uzao.ru]снять похмелье капельницей[/url] Пригодится, если случится беда для Подмосковья. Если ваш близкий не может прийти в себя после запоя — не ждите. Капельница от похмелья — это реальная помощь, которая работает!

  39. Мы просто смотрели, как он умирает. Когда я нашёл в интернете номер службы выезда нарколога, это был последний шанс. Позвонил, объяснил ситуацию. капельница от алкоголя на дому — это дало нам второй шанс. Врач приехал, осмотрел его. Анонимно, без учёта, без лишних вопросов. вывести из запоя [url=https://narkolog.vyvod-iz-zapoya-na-domu-kazan.ru]вывести из запоя[/url] По ссылке — подробная информация для нашего города. Звоните, помогайте, спасайте. Вывод из запоя на дому — это реальность, и она работает!

  40. И мы смотрели на это, чувствуя свою беспомощность. И тогда мы поняли: нужен стационар, клиника, профессиональная помощь. Врачи взялись за отца, и это был наш последний шанс. Наркологическая клиника — что сохранило нашу семью. Он прошёл полный курс детоксикации и психотерапии. Мы снова стали семьёй. лечение наркомании люберцы [url=https://narkologicheskaya-klinika-moskva-eip.ru]лечение наркомании люберцы[/url] Это может спасти жизнь для Люберец. Не ждите, пока станет поздно. Наркологическая клиника — это реальное решение проблемы!

  41. Его тошнило, голова раскалывалась, руки тряслись. Но ничего не работало, ему становилось только хуже. Случайно наткнулась на сайт, где предлагали капельницы от похмелья с выездом на дом. Капельница от похмелья — это спасло наш выходной. Вечером он был полностью в порядке. Всё честно и без обмана. капельница от запоя в мытищах [url=https://narkolog.kapelnicza-ot-pokhmelya-uzao.ru]капельница от запоя в мытищах[/url] По ссылке — подробная информация для Подмосковья. Каждый час на счету. Капельница от похмелья — это реальная помощь, которая работает!

  42. Когда я понял, что брат умирает — я понял, что нужно срочно действовать. Я испугался, что потеряю его навсегда. В больницу он не хотел, а уговоры не действовали. Соседка посоветовала: «Вызови нарколога на дом, они выводят из запоя круглосуточно». срочная детоксикация — это дало нам второй шанс. Через пару часов он открыл глаза и улыбнулся. Анонимно, без учёта, без лишних вопросов. Это реально работает. выезд нарколога круглосуточно [url=https://narkolog-na-dom-v-kazani.ru]https://narkolog-na-dom-v-kazani.ru[/url] Там все контакты и цены для Казани. Каждый час на счету. Нарколог на дом — это реальность, и она работает!

  43. Когда алкоголь стал его единственным смыслом жизни. Мы перепробовали всё — и капельницы, и уговоры, и даже народные методы. Врачи объяснили, как проходит лечение, и мы решились. Наркологическая помощь — это вернуло брата к жизни. Мы снова видим его улыбку, слышим его голос. Это был последний шаг, но он оказался правильным. круглосуточная помощь наркозависимым [url=https://kapelnica.narkologicheskaya-pomoshh-v-volgograde17.ru]круглосуточная помощь наркозависимым[/url] Сохраните, поделитесь, не потеряйте для юга России. Если ваш близкий не может справиться с зависимостью — наркологическая помощь может стать шансом на новую жизнь. Наркологическая помощь — это реальное решение проблемы!

  44. Я понял, что без стационара нам не обойтись. И нашли ту, которая дала результат. Вывод из запоя в стационаре — что вернуло брата к жизни. И через два месяца мы увидели результат. Мы снова стали семьёй. вывод из запоя волжский стационар [url=https://narkolog.vyvod-iz-zapoya-v-staczionare-volgograd.ru]вывод из запоя волжский стационар[/url] Сохраните, поделитесь, не потеряйте для нашего города. Если ваш близкий не может справиться с зависимостью — стационар даёт шанс на новую жизнь. Вывод из запоя в стационаре — это реальное решение проблемы!

  45. Мы перепробовали всё, чтобы помочь брату. Алкоголь забирал его с каждым днём. Врачи пообещали, что это поможет. закодироваться в клинике — это было единственное, что реально помогло. Мы снова видим его улыбку, слышим его голос. Это был последний шаг, но он оказался правильным. сколько стоит закодировать человека [url=https://zapoy.kodirovanie-ot-alkogolizma-kazan.ru]сколько стоит закодировать человека[/url] Это может спасти жизнь для нашего города. Не ждите, пока станет поздно. Кодирование от алкоголизма — это реальное решение проблемы!

  46. Когда мой брат понял, что алкоголь разрушает его жизнь. Где помогают не только телу, но и душе. анонимное кодирование от алкоголя — то, что дало ему шанс начать всё заново. Он вернулся к работе, к семье, к жизни. Спасибо врачам за их профессионализм и терпение. кодирование от алкоголизма [url=https://alkogolizm.kodirovanie-ot-alkogolizma-kazan.ru]кодирование от алкоголизма[/url] Это может спасти жизнь для республики. Если ваш близкий не может справиться с зависимостью — кодирование может стать шансом на новую жизнь. Кодирование от алкоголизма — это реальное решение проблемы!

  47. Я понял, что без профессиональной помощи он не справится. Он пил уже несколько лет, и мы просто смирились. И нашли ту, которая дала результат. анонимная наркологическая помощь — это было единственное, что реально помогло. Работал с психологами, посещал групповые занятия. Спасибо врачам за их труд и терпение. реабилитация наркозависимых в люберцах [url=https://kodirovanie.narkologicheskaya-klinika-moskva-eip.ru]реабилитация наркозависимых в люберцах[/url] Сохраните, поделитесь, не потеряйте для нашего города. Не ждите, пока станет поздно. Наркологическая клиника — это реальное решение проблемы!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注