Код: Выделить всё
{
"Cause": "{\n \"errorType\": \"IOException\",\n \"errorMessage\":
\"Too many open files : [...]at System.IO.FileSystem.RemoveDirectoryRecursive(String fullPath)
"Error": "IOException",
"ExecutionArn": [...]
Когда я выполняю его с помощью инструмента тестирования AWS .NET Lambda с точно таким же вводом (JSON), я не могу вызвать исключение. Поэтому я предполагаю, что моя система Windows 10 более снисходительна к количеству файловых дескрипторов, чем система на стороне AWS. Поэтому я добавил вызов _setmaxstdio в свой лямбда-код:
Код: Выделить всё
[DllImport("msvcrt.dll")]
public static extern int _setmaxstdio(int newMax);
Код: Выделить всё
int ret = _setmaxstdio(128);
- https://docs.aws.amazon.com/lambda/latest/dg. /gettingstarted-limits.html#function-configuration-deployment-and-execution
¹ Я подозреваю, что Task.WhenAll вызывается во всех 1024 потоках, что точно достигает предела в 1024 открытых файловых дескриптора.
Подробнее здесь: https://stackoverflow.com/questions/781 ... open-files